[FFmpeg-devel] movenc: Enable timecode tracks in MP4

Dave Rice dave at dericed.com
Wed Mar 16 00:53:46 CET 2016


> On Feb 27, 2016, at 10:24 PM, Michael Niedermayer <michael at niedermayer.cc> wrote:
> 
> On Thu, Feb 04, 2016 at 04:45:09PM +0000, Carl Eugen Hoyos wrote:
>> Syed Andaleeb Roomy <andaleebcse <at> gmail.com> writes:
>> 
>>> I worked on the attached patch to enable timecode tracks in MP4 files
>>> written by ffmpeg. Could someone please take a look to see if it is
>>> acceptable?
>> 
>> Ping, see ticket #4704.
> 
> applied
> 
> thanks

[...]

I noticed that this patch affects some workflows so wanted to send a note.

I can produce an NTSC file with timecode via:
ffmpeg -f lavfi -i testsrc=r=30000/1001:d=1 -metadata "timecode=01:12:23;04" -y test.mov

If I try to transcode the file in a way that changes the frame rate, then the output fails with "[mp4 @ 0x7fcf13000c00] Drop frame is only allowed with 30000/1001 or 60000/1001 FPS".

drice:avsurgery drice$ ffmpeg -i test.mov -r 28 -y test.mp4
ffmpeg version N-43081-g7725210 Copyright (c) 2000-2016 the FFmpeg developers
  built with Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-opencl --enable-libx264 --enable-libmp3lame --enable-libxvid --enable-libfreetype --enable-ffplay --enable-libopenjpeg --disable-decoder=jpeg2000 --extra-cflags=-I/usr/local/Cellar/openjpeg/1.5.2_1/include/openjpeg-1.5 --enable-vda
  libavutil      55. 19.100 / 55. 19.100
  libavcodec     57. 28.103 / 57. 28.103
  libavformat    57. 28.102 / 57. 28.102
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 39.102 /  6. 39.102
  libavresample   3.  0.  0 /  3.  0.  0
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mov':
  Metadata:
    major_brand     : qt
    minor_version   : 512
    compatible_brands: qt
    encoder         : Lavf57.28.102
  Duration: 00:00:01.00, start: 0.000000, bitrate: 73 kb/s
    Stream #0:0(eng): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p, 320x240 [SAR 1:1 DAR 4:3], 59 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : DataHandler
      encoder         : Lavc57.28.103 libx264
      timecode        : 01:12:23;04
    Stream #0:1(eng): Data: none (tmcd / 0x64636D74), 0 kb/s
    Metadata:
      handler_name    : DataHandler
      timecode        : 01:12:23;04
No pixel format specified, yuv444p for H.264 encoding chosen.
Use -pix_fmt yuv420p for compatibility with outdated media players.
[libx264 @ 0x7fcf12005c00] using SAR=1/1
[libx264 @ 0x7fcf12005c00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 0x7fcf12005c00] profile High 4:4:4 Predictive, level 1.3, 4:4:4 8-bit
[libx264 @ 0x7fcf12005c00] 264 - core 148 r2601 a0cd7d3 - H.264/MPEG-4 AVC codec - Copyleft 2003-2015 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=4 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
[mp4 @ 0x7fcf13000c00] Drop frame is only allowed with 30000/1001 or 60000/1001 FPS
Output #0, mp4, to 'test.mp4':
  Metadata:
    major_brand     : qt
    minor_version   : 512
    compatible_brands: qt
    encoder         : Lavf57.28.102
    Stream #0:0(eng): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv444p, 320x240 [SAR 1:1 DAR 4:3], q=-1--1, 28 fps, 14336 tbn, 28 tbc (default)
    Metadata:
      handler_name    : DataHandler
      timecode        : 01:12:23;04
      encoder         : Lavc57.28.103 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument

I suggest if the source file has timecode and the frame rate is changed that FFmpeg provide a warning, but that the encoding still occurs.
Dave Rice

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20160315/61054063/attachment.sig>


More information about the ffmpeg-devel mailing list