[FFmpeg-trac] #3453(avformat:new): Mov timecode track duration incorrect

FFmpeg trac at avcodec.org
Wed Mar 12 11:09:53 CET 2014


#3453: Mov timecode track duration incorrect
----------------------------------+--------------------------------------
             Reporter:  bmcleod   |                     Type:  defect
               Status:  new       |                 Priority:  minor
            Component:  avformat  |                  Version:  git-master
             Keywords:  mov tmcd  |               Blocked By:
             Blocking:            |  Reproduced by developer:  0
Analyzed by developer:  0         |
----------------------------------+--------------------------------------
 When muxing mov files containing a timecode track the duration of the
 timecode stream on the output is wrong, differences in the timescale
 between video and timecode are not accounted for.

 The example file is a minute long and has a timecode track (note the
 duration of the video and timecode tracks are the same)
 {{{
  ffprobe -show_streams -print_format xml mov_with_tmcd.mov 2>/dev/null
 <?xml version="1.0" encoding="UTF-8"?>
 <ffprobe>
     <streams>
         <stream index="0" codec_name="h264" codec_long_name="H.264 / AVC /
 MPEG-4 AVC / MPEG-4 part 10" profile="High" codec_type="video"
 codec_time_base="1/50" codec_tag_string="avc1" codec_tag="0x31637661"
 width="720" height="576" has_b_frames="2" sample_aspect_ratio="0:1"
 display_aspect_ratio="0:1" pix_fmt="yuv420p" level="30"
 r_frame_rate="25/1" avg_frame_rate="25/1" time_base="1/25" start_pts="0"
 start_time="0.000000" duration_ts="1502" duration="60.080000"
 bit_rate="81100" nb_frames="1502">
             <disposition default="1" dub="0" original="0" comment="0"
 lyrics="0" karaoke="0" forced="0" hearing_impaired="0" visual_impaired="0"
 clean_effects="0" attached_pic="0"/>
             <tag key="language" value="eng"/>
             <tag key="handler_name" value="DataHandler"/>
             <tag key="timecode" value="00:00:00:00"/>
         </stream>
         <stream index="1" codec_name="pcm_s16le" codec_long_name="PCM
 signed 16-bit little-endian" codec_type="audio" codec_time_base="1/48000"
 codec_tag_string="sowt" codec_tag="0x74776f73" sample_fmt="s16"
 sample_rate="48000" channels="2" channel_layout="stereo"
 bits_per_sample="16" r_frame_rate="0/0" avg_frame_rate="0/0"
 time_base="1/48000" start_pts="0" start_time="0.000000"
 duration_ts="2880000" duration="60.000000" bit_rate="1536000"
 nb_frames="2880000">
             <disposition default="1" dub="0" original="0" comment="0"
 lyrics="0" karaoke="0" forced="0" hearing_impaired="0" visual_impaired="0"
 clean_effects="0" attached_pic="0"/>
             <tag key="language" value="eng"/>
             <tag key="handler_name" value="DataHandler"/>
         </stream>
         <stream index="2" codec_type="data" codec_time_base="1/25"
 codec_tag_string="tmcd" codec_tag="0x64636d74" r_frame_rate="0/0"
 avg_frame_rate="0/0" time_base="1/25" start_pts="0" start_time="0.000000"
 duration_ts="1502" duration="60.080000" bit_rate="798" nb_frames="1500">
             <disposition default="0" dub="0" original="0" comment="0"
 lyrics="0" karaoke="0" forced="0" hearing_impaired="0" visual_impaired="0"
 clean_effects="0" attached_pic="0"/>
             <tag key="language" value="eng"/>
             <tag key="handler_name" value="DataHandler"/>
             <tag key="timecode" value="00:00:00:00"/>
         </stream>
     </streams>
 </ffprobe>
 }}}


 The file is remuxed using ffmpeg
 {{{
  ffmpeg -report -i mov_with_tmcd.mov -vcodec copy -acodec copy -dcodec
 copy -map 0:v -map 0:a -map 0:d out_git_head.mov
 ffmpeg started on 2014-03-12 at 09:19:43
 Report written to "ffmpeg-20140312-091943.log"
 ffmpeg version N-61313-g1f36ebf Copyright (c) 2000-2014 the FFmpeg
 developers
   built on Mar 12 2014 09:16:27 with gcc 4.8 (Ubuntu/Linaro
 4.8.1-10ubuntu9)
   configuration: --enable-swscale --enable-avfilter --enable-avresample
 --enable-postproc --enable-libmp3lame --enable-libopenjpeg --enable-
 libbluray --enable-libx264 --enable-libfaac --enable-gpl --enable-version3
 --enable-nonfree --enable-gnutls --enable-pthreads --arch=x86_64 --enable-
 yasm --enable-optimizations --disable-static --enable-shared --extra-
 cxxflags='"-fPIC"' --extra-cflags='"-march=native"'
   libavutil      52. 66.101 / 52. 66.101
   libavcodec     55. 52.102 / 55. 52.102
   libavformat    55. 34.100 / 55. 34.100
   libavdevice    55. 11.100 / 55. 11.100
   libavfilter     4.  3.100 /  4.  3.100
   libavresample   1.  2.  0 /  1.  2.  0
   libswscale      2.  5.101 /  2.  5.101
   libswresample   0. 18.100 /  0. 18.100
   libpostproc    52.  3.100 / 52.  3.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'mov_with_tmcd.mov':
   Metadata:
     major_brand     : qt
     minor_version   : 512
     compatible_brands: qt
     encoder         : Lavf55.34.100
   Duration: 00:01:00.08, start: 0.000000, bitrate: 1626 kb/s
     Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
 720x576, 81 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc (default)
     Metadata:
       handler_name    : DataHandler
       timecode        : 00:00:00:00
     Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz,
 stereo, s16, 1536 kb/s (default)
     Metadata:
       handler_name    : DataHandler
     Stream #0:2(eng): Data: none (tmcd / 0x64636D74), 0 kb/s
     Metadata:
       handler_name    : DataHandler
       timecode        : 00:00:00:00
 [mov @ 0x10b30c0] You requested a copy of the original timecode track so
 timecode metadata are now ignored
 Output #0, mov, to 'out_git_head.mov':
   Metadata:
     major_brand     : qt
     minor_version   : 512
     compatible_brands: qt
     encoder         : Lavf55.34.100
     Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), yuv420p, 720x576,
 q=2-31, 81 kb/s, 25 fps, 12800 tbn, 25 tbc (default)
     Metadata:
       handler_name    : DataHandler
       timecode        : 00:00:00:00
     Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz,
 stereo, 1536 kb/s (default)
     Metadata:
       handler_name    : DataHandler
     Stream #0:2(eng): Data: none (tmcd / 0x64636D74), 0 kb/s
     Metadata:
       handler_name    : DataHandler
       timecode        : 00:00:00:00
 Stream mapping:
   Stream #0:0 -> #0:0 (copy)
   Stream #0:1 -> #0:1 (copy)
   Stream #0:2 -> #0:2 (copy)
 Press [q] to stop, [?] for help
 frame= 1502 fps=0.0 q=-1.0 Lsize=   11929kB time=00:01:00.00
 bitrate=1628.7kbits/s
 video:595kB audio:11250kB subtitle:0 data:6 global headers:0kB muxing
 overhead 0.658521%
 }}}

 The duration of the timecode stream in the output is 30760.960000 (8h
 32mn)

 {{{
 ffprobe -show_streams -print_format xml out_git_head.mov 2>/dev/null
 <?xml version="1.0" encoding="UTF-8"?>
 <ffprobe>
     <streams>
         <stream index="0" codec_name="h264" codec_long_name="H.264 / AVC /
 MPEG-4 AVC / MPEG-4 part 10" profile="High" codec_type="video"
 codec_time_base="1/50" codec_tag_string="avc1" codec_tag="0x31637661"
 width="720" height="576" has_b_frames="2" sample_aspect_ratio="0:1"
 display_aspect_ratio="0:1" pix_fmt="yuv420p" level="30"
 r_frame_rate="25/1" avg_frame_rate="25/1" time_base="1/12800"
 start_pts="0" start_time="0.000000" duration_ts="769024"
 duration="60.080000" bit_rate="81100" nb_frames="1502">
             <disposition default="1" dub="0" original="0" comment="0"
 lyrics="0" karaoke="0" forced="0" hearing_impaired="0" visual_impaired="0"
 clean_effects="0" attached_pic="0"/>
             <tag key="language" value="eng"/>
             <tag key="handler_name" value="DataHandler"/>
             <tag key="timecode" value="00:00:00:00"/>
         </stream>
         <stream index="1" codec_name="pcm_s16le" codec_long_name="PCM
 signed 16-bit little-endian" codec_type="audio" codec_time_base="1/48000"
 codec_tag_string="sowt" codec_tag="0x74776f73" sample_fmt="s16"
 sample_rate="48000" channels="2" channel_layout="stereo"
 bits_per_sample="16" r_frame_rate="0/0" avg_frame_rate="0/0"
 time_base="1/48000" start_pts="0" start_time="0.000000"
 duration_ts="2880000" duration="60.000000" bit_rate="1536000"
 nb_frames="2880000">
             <disposition default="1" dub="0" original="0" comment="0"
 lyrics="0" karaoke="0" forced="0" hearing_impaired="0" visual_impaired="0"
 clean_effects="0" attached_pic="0"/>
             <tag key="language" value="eng"/>
             <tag key="handler_name" value="DataHandler"/>
         </stream>
         <stream index="2" codec_type="data" codec_time_base="1/25"
 codec_tag_string="tmcd" codec_tag="0x64636d74" r_frame_rate="0/0"
 avg_frame_rate="0/0" time_base="1/25" start_pts="0" start_time="0.000000"
 duration_ts="769024" duration="30760.960000" bit_rate="800"
 nb_frames="1500">
             <disposition default="0" dub="0" original="0" comment="0"
 lyrics="0" karaoke="0" forced="0" hearing_impaired="0" visual_impaired="0"
 clean_effects="0" attached_pic="0"/>
             <tag key="language" value="eng"/>
             <tag key="handler_name" value="DataHandler"/>
             <tag key="timecode" value="00:00:00:00"/>
         </stream>
     </streams>
 </ffprobe>

 }}}

 If the input file has the same timebase on the video and data tracks then
 this issue can be worked around using the -video_track_timescale option
 for movenc

--
Ticket URL: <https://trac.ffmpeg.org/ticket/3453>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list