Opened 9 years ago

Closed 8 years ago

Last modified 8 years ago

#4704 closed enhancement (fixed)

Timecode data not maintained when using mp4 wrapper instead of mov wrapper

Reported by: Alan Owned by:
Priority: wish Component: avformat
Version: git-master Keywords: mov
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary :

Working with a quicktime mov with timecode embedded.

  • When an output is created with a .mov wrapper the timecode value is maintained
  • When changing the output file to have a .mp4 extension the timecode value is not maintained.

Timecode in mov output is located at the following location :

Metadata: handler_name : DataHandler
timecode : 01:00:00:00

Below are both calls for creating the output files as well as both calls for reading the metadata values.

FFMPEG Call with timcode working :

/Volumes/storage/rendertemp/apps/ffmpeg -y -i /Volumes/storage/rendertemp/timecode/tc.mov -codec:v libx264 /Volumes/storage/rendertemp/timecode/out.mov
ffmpeg version N-73566-g5233f25-tessus Copyright (c) 2000-2015 the FFmpeg developers

built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --as=yasm --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-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzmq --enable-version3 --disable-ffplay --disable-indev=qtkit --disable-indev=x11grab_xcb
libavutil 54. 28.100 / 54. 28.100
libavcodec 56. 46.101 / 56. 46.101
libavformat 56. 40.100 / 56. 40.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 20.100 / 5. 20.100
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.100 / 1. 2.100
libpostproc 53. 3.100 / 53. 3.100

Guessed Channel Layout for Input Stream #0.1 : mono
Guessed Channel Layout for Input Stream #0.2 : mono
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Volumes/storage/rendertemp/timecode/tc.mov':

Metadata:

major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2015-07-08 15:12:20

Duration: 00:00:00.20, start: 0.000000, bitrate: 30526 kb/s

Stream #0:0(eng): Video: dvvideo (dvcp / 0x70637664), yuv420p(bt470bg/smpte170m/bt709), 720x576 [SAR 16:15 DAR 4:3], 28800 kb/s, SAR 59:54 DAR 295:216, 25 fps, 25 tbr, 25 tbn, 25 tbc (default)
Metadata:

creation_time : 2015-07-08 15:12:20
handler_name : Apple Alias Data Handler
encoder : DV - PAL
timecode : 01:00:00:00

Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, 1 channels, s16, 768 kb/s (default)
Metadata:

creation_time : 2015-07-08 15:12:20
handler_name : Apple Alias Data Handler

Stream #0:2(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, 1 channels, s16, 768 kb/s (default)
Metadata:

creation_time : 2015-07-08 15:12:20
handler_name : Apple Alias Data Handler

Stream #0:3(eng): Data: none (tmcd / 0x64636D74), 0 kb/s (default)
Metadata:

creation_time : 2015-07-08 15:12:20
handler_name : Apple Alias Data Handler
timecode : 01:00:00:00

[libx264 @ 0x7ffe63809a00] using SAR=59/54
[libx264 @ 0x7ffe63809a00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 0x7ffe63809a00] profile High, level 3.0
[libx264 @ 0x7ffe63809a00] 264 - core 144 - 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=-2 threads=12 lookahead_threads=2 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
Output #0, mov, to '/Volumes/storage/rendertemp/timecode/out.mov':

Metadata:

major_brand : qt
minor_version : 537199360
compatible_brands: qt
encoder : Lavf56.40.100
Stream #0:0(eng): Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 720x576 [SAR 59:54 DAR 295:216], q=-1--1, 25 fps, 12800 tbn, 25 tbc (default)
Metadata:

creation_time : 2015-07-08 15:12:20
handler_name : Apple Alias Data Handler
timecode : 01:00:00:00
encoder : Lavc56.46.101 libx264

Stream #0:1(eng): Audio: aac (libvo_aacenc) (mp4a / 0x6134706D), 48000 Hz, mono, s16, 128 kb/s (default)
Metadata:

creation_time : 2015-07-08 15:12:20
handler_name : Apple Alias Data Handler
encoder : Lavc56.46.101 libvo_aacenc

Stream mapping:

Stream #0:0 -> #0:0 (dvvideo (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (pcm_s16le (native) -> aac (libvo_aacenc))

Press [q] to stop, ? for help
frame= 5 fps=0.0 q=-1.0 Lsize= 10kB time=00:00:00.20 bitrate= 418.7kbits/s
video:4kB audio:4kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 27.566586%
[libx264 @ 0x7ffe63809a00] frame I:1 Avg QP:13.28 size: 3142
[libx264 @ 0x7ffe63809a00] frame P:1 Avg QP:14.77 size: 251
[libx264 @ 0x7ffe63809a00] frame B:3 Avg QP:17.64 size: 146
[libx264 @ 0x7ffe63809a00] consecutive B-frames: 20.0% 0.0% 0.0% 80.0%
[libx264 @ 0x7ffe63809a00] mb I I16..4: 81.8% 12.3% 5.9%
[libx264 @ 0x7ffe63809a00] mb P I16..4: 0.2% 0.0% 0.1% P16..4: 4.9% 0.1% 0.1% 0.0% 0.0% skip:94.5%
[libx264 @ 0x7ffe63809a00] mb B I16..4: 0.1% 0.0% 0.0% B16..8: 0.6% 0.1% 0.1% direct: 0.0% skip:99.1% L0:61.5% L1:38.5% BI: 0.0%
[libx264 @ 0x7ffe63809a00] 8x8 transform intra:12.2% inter:0.0%
[libx264 @ 0x7ffe63809a00] coded y,uvDC,uvAC intra: 3.5% 1.8% 0.9% inter: 0.1% 0.0% 0.0%
[libx264 @ 0x7ffe63809a00] i16 v,h,dc,p: 92% 5% 3% 0%
[libx264 @ 0x7ffe63809a00] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 45% 29% 26% 0% 0% 0% 0% 0% 0%
[libx264 @ 0x7ffe63809a00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 36% 36% 10% 3% 3% 3% 3% 3% 2%
[libx264 @ 0x7ffe63809a00] i8c dc,h,v,p: 78% 5% 17% 0%
[libx264 @ 0x7ffe63809a00] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7ffe63809a00] ref B L0: 83.3% 16.7%
[libx264 @ 0x7ffe63809a00] ref B L1: 76.7% 23.3%
[libx264 @ 0x7ffe63809a00] kb/s:153.20

FFPROBE Call with timecode maintained :

/Volumes/storage/rendertemp/apps/ffprobe -print_format json -show_format -show_streams /Volumes/storage/rendertemp/timecode/out.mov
ffprobe version N-73566-g5233f25-tessus Copyright (c) 2007-2015 the FFmpeg developers

built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --as=yasm --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-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzmq --enable-version3 --disable-ffplay --disable-indev=qtkit --disable-indev=x11grab_xcb
libavutil 54. 28.100 / 54. 28.100
libavcodec 56. 46.101 / 56. 46.101
libavformat 56. 40.100 / 56. 40.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 20.100 / 5. 20.100
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.100 / 1. 2.100
libpostproc 53. 3.100 / 53. 3.100

{
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Volumes/storage/rendertemp/timecode/out.mov':

Metadata:

major_brand : qt
minor_version : 512
compatible_brands: qt
encoder : Lavf56.40.100

Duration: 00:00:00.23, start: 0.033333, bitrate: 360 kb/s

Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x576 [SAR 59:54 DAR 295:216], 180 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:

handler_name : DataHandler
encoder : Lavc56.46.101 libx264
timecode : 01:00:00:00

Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 128 kb/s (default)
Metadata:

handler_name : DataHandler

Stream #0:2(eng): Data: none (tmcd / 0x64636D74), 0 kb/s
Metadata:

handler_name : DataHandler
timecode : 01:00:00:00

Unsupported codec with id 0 for input stream 2

"streams": [

{

"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,
"coded_width": 720,
"coded_height": 576,
"has_b_frames": 2,
"sample_aspect_ratio": "59:54",
"display_aspect_ratio": "295:216",
"pix_fmt": "yuv420p",
"level": 30,
"chroma_location": "left",
"refs": 4,
"is_avc": "1",
"nal_length_size": "4",
"r_frame_rate": "25/1",
"avg_frame_rate": "25/1",
"time_base": "1/12800",
"start_pts": 0,
"start_time": "0.000000",
"duration_ts": 2560,
"duration": "0.200000",
"bit_rate": "180280",
"bits_per_raw_sample": "8",
"nb_frames": "5",
"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

},
"tags": {

"language": "eng",
"handler_name": "DataHandler",
"encoder": "Lavc56.46.101 libx264",
"timecode": "01:00:00:00"

}

},
{

"index": 1,
"codec_name": "aac",
"codec_long_name": "AAC (Advanced Audio Coding)",
"profile": "LC",
"codec_type": "audio",
"codec_time_base": "1/48000",
"codec_tag_string": "mp4a",
"codec_tag": "0x6134706d",
"sample_fmt": "fltp",
"sample_rate": "48000",
"channels": 1,
"channel_layout": "mono",
"bits_per_sample": 0,
"r_frame_rate": "0/0",
"avg_frame_rate": "0/0",
"time_base": "1/48000",
"start_pts": -1600,
"start_time": "-0.033333",
"duration_ts": 11200,
"duration": "0.233333",
"bit_rate": "128708",
"nb_frames": "11",
"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

},
"tags": {

"language": "eng",
"handler_name": "DataHandler"

}

},
{

"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/12800",
"start_pts": 0,
"start_time": "0.000000",
"duration_ts": 2560,
"duration": "0.200000",
"bit_rate": "160",
"nb_frames": "1",
"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

},
"tags": {

"language": "eng",
"handler_name": "DataHandler",
"timecode": "01:00:00:00"

}

}

],
"format": {

"filename": "/Volumes/storage/rendertemp/timecode/out.mov",
"nb_streams": 3,
"nb_programs": 0,
"format_name": "mov,mp4,m4a,3gp,3g2,mj2",
"format_long_name": "QuickTime / MOV",
"start_time": "-0.033333",
"duration": "0.234000",
"size": "10537",
"bit_rate": "360239",
"probe_score": 100,
"tags": {

"major_brand": "qt ",
"minor_version": "512",
"compatible_brands": "qt ",
"encoder": "Lavf56.40.100"

}

}

}

FFMPEG Call with timcode not working :

/Volumes/storage/rendertemp/apps/ffmpeg -y -i /Volumes/storage/rendertemp/timecode/tc.mov -codec:v libx264 /Volumes/storage/rendertemp/timecode/out.mp4
ffmpeg version N-73566-g5233f25-tessus Copyright (c) 2000-2015 the FFmpeg developers

built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --as=yasm --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-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzmq --enable-version3 --disable-ffplay --disable-indev=qtkit --disable-indev=x11grab_xcb
libavutil 54. 28.100 / 54. 28.100
libavcodec 56. 46.101 / 56. 46.101
libavformat 56. 40.100 / 56. 40.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 20.100 / 5. 20.100
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.100 / 1. 2.100
libpostproc 53. 3.100 / 53. 3.100

Guessed Channel Layout for Input Stream #0.1 : mono
Guessed Channel Layout for Input Stream #0.2 : mono
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Volumes/storage/rendertemp/timecode/tc.mov':

Metadata:

major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2015-07-08 15:12:20

Duration: 00:00:00.20, start: 0.000000, bitrate: 30526 kb/s

Stream #0:0(eng): Video: dvvideo (dvcp / 0x70637664), yuv420p(bt470bg/smpte170m/bt709), 720x576 [SAR 16:15 DAR 4:3], 28800 kb/s, SAR 59:54 DAR 295:216, 25 fps, 25 tbr, 25 tbn, 25 tbc (default)
Metadata:

creation_time : 2015-07-08 15:12:20
handler_name : Apple Alias Data Handler
encoder : DV - PAL
timecode : 01:00:00:00

Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, 1 channels, s16, 768 kb/s (default)
Metadata:

creation_time : 2015-07-08 15:12:20
handler_name : Apple Alias Data Handler

Stream #0:2(eng): Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, 1 channels, s16, 768 kb/s (default)
Metadata:

creation_time : 2015-07-08 15:12:20
handler_name : Apple Alias Data Handler

Stream #0:3(eng): Data: none (tmcd / 0x64636D74), 0 kb/s (default)
Metadata:

creation_time : 2015-07-08 15:12:20
handler_name : Apple Alias Data Handler
timecode : 01:00:00:00

[libx264 @ 0x7fb01b80e200] using SAR=59/54
[libx264 @ 0x7fb01b80e200] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 0x7fb01b80e200] profile High, level 3.0
[libx264 @ 0x7fb01b80e200] 264 - core 144 - 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=-2 threads=12 lookahead_threads=2 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
Output #0, mp4, to '/Volumes/storage/rendertemp/timecode/out.mp4':

Metadata:

major_brand : qt
minor_version : 537199360
compatible_brands: qt
encoder : Lavf56.40.100
Stream #0:0(eng): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 720x576 [SAR 59:54 DAR 295:216], q=-1--1, 25 fps, 12800 tbn, 25 tbc (default)
Metadata:

creation_time : 2015-07-08 15:12:20
handler_name : Apple Alias Data Handler
timecode : 01:00:00:00
encoder : Lavc56.46.101 libx264

Stream #0:1(eng): Audio: aac (libvo_aacenc) ([64][0][0][0] / 0x0040), 48000 Hz, mono, s16, 128 kb/s (default)
Metadata:

creation_time : 2015-07-08 15:12:20
handler_name : Apple Alias Data Handler
encoder : Lavc56.46.101 libvo_aacenc

Stream mapping:

Stream #0:0 -> #0:0 (dvvideo (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (pcm_s16le (native) -> aac (libvo_aacenc))

Press [q] to stop, ? for help
frame= 5 fps=0.0 q=-1.0 Lsize= 10kB time=00:00:00.20 bitrate= 387.8kbits/s
video:4kB audio:4kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 18.159807%
[libx264 @ 0x7fb01b80e200] frame I:1 Avg QP:13.28 size: 3142
[libx264 @ 0x7fb01b80e200] frame P:1 Avg QP:14.77 size: 251
[libx264 @ 0x7fb01b80e200] frame B:3 Avg QP:17.64 size: 146
[libx264 @ 0x7fb01b80e200] consecutive B-frames: 20.0% 0.0% 0.0% 80.0%
[libx264 @ 0x7fb01b80e200] mb I I16..4: 81.8% 12.3% 5.9%
[libx264 @ 0x7fb01b80e200] mb P I16..4: 0.2% 0.0% 0.1% P16..4: 4.9% 0.1% 0.1% 0.0% 0.0% skip:94.5%
[libx264 @ 0x7fb01b80e200] mb B I16..4: 0.1% 0.0% 0.0% B16..8: 0.6% 0.1% 0.1% direct: 0.0% skip:99.1% L0:61.5% L1:38.5% BI: 0.0%
[libx264 @ 0x7fb01b80e200] 8x8 transform intra:12.2% inter:0.0%
[libx264 @ 0x7fb01b80e200] coded y,uvDC,uvAC intra: 3.5% 1.8% 0.9% inter: 0.1% 0.0% 0.0%
[libx264 @ 0x7fb01b80e200] i16 v,h,dc,p: 92% 5% 3% 0%
[libx264 @ 0x7fb01b80e200] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 45% 29% 26% 0% 0% 0% 0% 0% 0%
[libx264 @ 0x7fb01b80e200] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 36% 36% 10% 3% 3% 3% 3% 3% 2%
[libx264 @ 0x7fb01b80e200] i8c dc,h,v,p: 78% 5% 17% 0%
[libx264 @ 0x7fb01b80e200] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x7fb01b80e200] ref B L0: 83.3% 16.7%
[libx264 @ 0x7fb01b80e200] ref B L1: 76.7% 23.3%
[libx264 @ 0x7fb01b80e200] kb/s:153.20

FFPROBE Call with timecode not maintained :

/Volumes/storage/rendertemp/apps/ffprobe -print_format json -show_format -show_streams /Volumes/storage/rendertemp/timecode/out.mp4
ffprobe version N-73566-g5233f25-tessus Copyright (c) 2007-2015 the FFmpeg developers

built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --as=yasm --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-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzmq --enable-version3 --disable-ffplay --disable-indev=qtkit --disable-indev=x11grab_xcb
libavutil 54. 28.100 / 54. 28.100
libavcodec 56. 46.101 / 56. 46.101
libavformat 56. 40.100 / 56. 40.100
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 20.100 / 5. 20.100
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.100 / 1. 2.100
libpostproc 53. 3.100 / 53. 3.100

{
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Volumes/storage/rendertemp/timecode/out.mp4':

Metadata:

major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.40.100

Duration: 00:00:00.23, start: 0.033333, bitrate: 333 kb/s

Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x576 [SAR 59:54 DAR 295:216], 180 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:

handler_name : VideoHandler

Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 128 kb/s (default)
Metadata:

handler_name : SoundHandler

"streams": [

{

"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,
"coded_width": 720,
"coded_height": 576,
"has_b_frames": 2,
"sample_aspect_ratio": "59:54",
"display_aspect_ratio": "295:216",
"pix_fmt": "yuv420p",
"level": 30,
"chroma_location": "left",
"refs": 4,
"is_avc": "1",
"nal_length_size": "4",
"r_frame_rate": "25/1",
"avg_frame_rate": "25/1",
"time_base": "1/12800",
"start_pts": 0,
"start_time": "0.000000",
"duration_ts": 2560,
"duration": "0.200000",
"bit_rate": "180280",
"bits_per_raw_sample": "8",
"nb_frames": "5",
"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

},
"tags": {

"language": "eng",
"handler_name": "VideoHandler"

}

},
{

"index": 1,
"codec_name": "aac",
"codec_long_name": "AAC (Advanced Audio Coding)",
"profile": "LC",
"codec_type": "audio",
"codec_time_base": "1/48000",
"codec_tag_string": "mp4a",
"codec_tag": "0x6134706d",
"sample_fmt": "fltp",
"sample_rate": "48000",
"channels": 1,
"channel_layout": "mono",
"bits_per_sample": 0,
"r_frame_rate": "0/0",
"avg_frame_rate": "0/0",
"time_base": "1/48000",
"start_pts": -1600,
"start_time": "-0.033333",
"duration_ts": 11200,
"duration": "0.233333",
"bit_rate": "128708",
"nb_frames": "11",
"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

},
"tags": {

"language": "eng",
"handler_name": "SoundHandler"

}

}

],
"format": {

"filename": "/Volumes/storage/rendertemp/timecode/out.mp4",
"nb_streams": 2,
"nb_programs": 0,
"format_name": "mov,mp4,m4a,3gp,3g2,mj2",
"format_long_name": "QuickTime / MOV",
"start_time": "-0.033333",
"duration": "0.234000",
"size": "9760",
"bit_rate": "333675",
"probe_score": 100,
"tags": {

"major_brand": "isom",
"minor_version": "512",
"compatible_brands": "isomiso2avc1mp41",
"encoder": "Lavf56.40.100"

}

}

}

Attachments (1)

timecode-test-files.zip (104.3 KB ) - added by Alan 9 years ago.
Timecode Test Files ( input and outputs )

Download all attachments as: .zip

Change History (10)

by Alan, 9 years ago

Attachment: timecode-test-files.zip added

Timecode Test Files ( input and outputs )

comment:1 by Alan, 9 years ago

Type: enhancementdefect

Reading into the logs further , when the system outputs the .mp4 file its saying it will write a metadata value for the timecode value on Stream #0:0(eng): , but that metadata value is not maintained.

"excerpt" below from ffmpeg creation command stated in previous thread :

Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x576 [SAR 59:54 DAR 295:216], 180 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
handler_name : DataHandler?
encoder : Lavc56.46.101 libx264
timecode : 01:00:00:00

comment:2 by Carl Eugen Hoyos, 9 years ago

Component: undeterminedavformat
Keywords: mov added

As you correctly report, mov files do / can contain a timecode track, isom files do not contain such a track.
What issue do you see that can be fixed in FFmpeg?

comment:3 by Alan, 9 years ago

Yes, indeed it is not standard to have timecode track in mp4 files, there is although a Technical note from Apple on how to handle timecode in this case. If time permits it would be nice to review the feasibility of this implementation.

https://developer.apple.com/library/mac/technotes/tn2174/_index.html#//apple_ref/doc/uid/DTS40014018-CH1-TNTAG14

I will see if there are some sample files from Final Cut Pro X with mp4s and timecode.

I also can reach out to the Apple FCPX development team if need be.

comment:4 by Carl Eugen Hoyos, 9 years ago

Please provide a sample file.

comment:5 by Alan, 9 years ago

Here is a link to a sample mp4 file with timecode embedded.

This file was produced by the Apple Final Cut Pro team.

https://drive.google.com/file/d/0B_vq033UGAC4YlI5Q2dESTh5d1E/view?usp=sharing

Let me know if you have any questions.

comment:6 by Carl Eugen Hoyos, 9 years ago

Priority: normalwish
Status: newopen
Type: defectenhancement
Version: unspecifiedgit-master

comment:7 by Syed Andaleeb Roomy, 8 years ago

I had sent a patch for this to ffmpeg-devel mailing list a couple of weeks ago, but I did not get any response/review for it:
Mail: http://ffmpeg.org/pipermail/ffmpeg-devel/2016-January/187596.html
Patch: http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20160121/4c46f63b/attachment.obj

comment:8 by Carl Eugen Hoyos, 8 years ago

Resolution: fixed
Status: openclosed

I believe this was fixed by Syed Andaleeb Roomy in b4dcd351ec50caaa484bc5c66b4a8d5557a0f1ea

comment:9 by Christian Ebert, 8 years ago

Why not use -copy_unknown for this? - see: #5492

Note: See TracTickets for help on using tickets.