When I run my 24fps Quicktime mov files through an FFmpeg transcode they are
coming out with a Movie Header timescale of 1000, when the source file has a
timescale of 24000. This low timescale value is causing issues in some
professional software tools when seeking the file.
In my case the source file is a Quicktime with 1 x video track (DNx115) and 1 x
data track (Timecode). I'm transcoding it to DNx36.
I can force the video timescale to 24000 by adding "-video_track_timescale
24000", but this does not affect anything other than the video track.
The command is as follows:
ffmpeg -i input.mov -c:v dnxhd -b:v 36M -pix_fmt yuv422p -video_track_timescale
24000 output.mov
Uncut console output:
ffmpeg version N-90214-gdd3f1e3a11-tessus Copyright (c) 2000-2018 the FFmpeg
developers
built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg
--extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl
--enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm
--enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb
--enable-libopencore-amrwb --enable-libopus --enable-libsnappy --enable-libsoxr
--enable-libspeex --enable-libtheora --enable-libvidstab
--enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack
--enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid
--enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3
--pkg-config-flags=--static --disable-ffplay
libavutil 56. 8.100 / 56. 8.100
libavcodec 58. 13.102 / 58. 13.102
libavformat 58. 10.100 / 58. 10.100
libavdevice 58. 2.100 / 58. 2.100
libavfilter 7. 12.100 / 7. 12.100
libswscale 5. 0.102 / 5. 0.102
libswresample 3. 0.101 / 3. 0.101
libpostproc 55. 0.100 / 55. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2018-03-06T10:45:16.000000Z
timecode : 01:14:25:22
Duration: 00:00:30.00, start: 0.000000, bitrate: 116392 kb/s
Stream #0:0(eng): Video: dnxhd (DNXHD) (AVdn / 0x6E645641), yuv422p(tv,
bt709), 1920x1080, 116391 kb/s, SAR 1:1 DAR 16:9, 24 fps, 24 tbr, 24k tbn, 24k
tbc (default)
Metadata:
creation_time : 2018-03-06T10:45:16.000000Z
handler_name : Apple Alias Data Handler
encoder : Avid DNxHD Codec
Stream #0:1(eng): Data: none (tmcd / 0x64636D74), 0 kb/s (default)
Metadata:
creation_time : 2018-03-06T10:45:20.000000Z
handler_name : Apple Alias Data Handler
timecode : 01:14:25:22
Stream mapping:
Stream #0:0 -> #0:0 (dnxhd (native) -> dnxhd (native))
Press [q] to stop, [?] for help
Output #0, mov, to 'output.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
timecode : 01:14:25:22
encoder : Lavf58.10.100
Stream #0:0(eng): Video: dnxhd (DNXHD) (AVdn / 0x6E645641), yuv422p,
1920x1080 [SAR 1:1 DAR 16:9], q=2-1024, 36000 kb/s, 0.04 fps, 24k tbn, 24 tbc
(default)
Metadata:
creation_time : 2018-03-06T10:45:16.000000Z
handler_name : Apple Alias Data Handler
encoder : Lavc58.13.102 dnxhd
frame= 720 fps=151 q=4.0 Lsize= 132482kB time=00:00:29.95
bitrate=36226.7kbits/s speed=6.28x
I have checked the timescale value in Atom Inspector and can clearly see that
the mvhd (Movie Header) is changed to 1000 in the output.mov when the input.mov
was set to 24000.
1000 is too low for accurate seeking.
Using Atom Inspector to manually change this header timescale to 24000 and
alter the duration fields to what they should be based on this timescale, the
file works as expected.
Is there anyway to set the Movie Header timescale value as an option in FFmpeg?
_______________________________________________
ffmpeg-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/ffmpeg-user
To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".