[FFmpeg-user] How to access H.264 MP4 timecode data

Francois Visagie francois.visagie at gmail.com
Fri Jan 31 16:22:44 CET 2014


Hi All,

 

I'm trying to access the timecode information stored by my camcorder, but
not having any luck. The camera is set to H.264 MP4 recording in this case.
According to ExifTool as well as ffprobe and ffmpeg the timecode data is
present, but I haven't been able to find a way to extract it.

 

According to the ffprobe manual:

ffprobe supports Timecode extraction: 

*	.
*	MOV timecode is extracted from tmcd track, so is available in the
tmcd stream metadata ('-show_streams', see TAG:timecode).

I would expect this to extract the timecode stream, but only 1 TAG:timecode
value is printed. Also, the "unsupported codec" message does not inspire
much confidence that this actually can work:

 

C:\Users\fvisagie\Videos\Home Videos\Testing\AVCHD metadata
subtitles>ffprobe -i MVI_0006.MP4 -select_streams 2 -show_streams

ffprobe version N-54277-gff130d7 Copyright (c) 2007-2013 the FFmpeg
developers

  built on Jun 30 2013 01:20:12 with gcc 4.7.3 (GCC)

  configuration: --enable-gpl --enable-version3 --disable-w32threads
--enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r
--enable-gnutls --enab

le-iconv --enable-libass --enable-libbluray --enable-libcaca
--enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug
--enable-libmp3lame --ena

ble-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg
--enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr
--enable-libsp

eex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc
--enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264
--enable-libxavs --

enable-libxvid --enable-zlib

  libavutil      52. 37.101 / 52. 37.101

  libavcodec     55. 17.100 / 55. 17.100

  libavformat    55. 10.100 / 55. 10.100

  libavdevice    55.  2.100 / 55.  2.100

  libavfilter     3. 77.101 /  3. 77.101

  libswscale      2.  3.100 /  2.  3.100

  libswresample   0. 17.102 /  0. 17.102

  libpostproc    52.  3.100 / 52.  3.100

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'MVI_0006.MP4':

  Metadata:

    major_brand     : mp42

    minor_version   : 1

    compatible_brands: mp42avc1CAEP

    creation_time   : 2014-01-30 17:57:13

    timecode        : 11:54:27:03

  Duration: 00:00:03.84, start: 0.000000, bitrate: 35109 kb/s

    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
1920x1080, 34508 kb/s, 50 fps, 50 tbr, 50k tbn, 100k tbc

    Metadata:

      creation_time   : 2014-01-30 17:57:13

    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo,
fltp, 253 kb/s

    Metadata:

      creation_time   : 2014-01-30 17:57:13

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

    Metadata:

      creation_time   : 2014-01-30 17:57:13

      timecode        : 11:54:27:03

Unsupported codec with id 0 for input stream 2

[STREAM]

index=2

codec_name=unknown

codec_long_name=unknown

profile=unknown

codec_type=data

codec_time_base=1/25

codec_tag_string=tmcd

codec_tag=0x64636d74

id=N/A

r_frame_rate=0/0

avg_frame_rate=0/0

time_base=1/50000

start_pts=0

start_time=0.000000

duration_ts=192000

duration=3.840000

bit_rate=1600

nb_frames=192

nb_read_frames=N/A

nb_read_packets=N/A

DISPOSITION:default=0

DISPOSITION:dub=0

DISPOSITION:original=0

DISPOSITION:comment=0

DISPOSITION:lyrics=0

DISPOSITION:karaoke=0

DISPOSITION:forced=0

DISPOSITION:hearing_impaired=0

DISPOSITION:visual_impaired=0

DISPOSITION:clean_effects=0

DISPOSITION:attached_pic=0

TAG:creation_time=2014-01-30 17:57:13

TAG:language=eng

TAG:timecode=11:54:27:03

[/STREAM]

 

How do I go beyond this to extract the full tmcd stream? 'ffprobe -i
MVI_0006.MP4 -select_streams 2 -show_packets -show_data ' produces output
like:

[PACKET]

codec_type=data

stream_index=2

pts=191000

pts_time=3.820000

dts=191000

dts_time=3.820000

duration=1000

duration_time=0.020000

convergence_duration=N/A

convergence_duration_time=N/A

size=4

pos=14832527

flags=K

data=

00000000: 0031 507d                                .1P}

 

Is the '0031 507d' what I'm looking for, and if so, how to interpret that?
Alternatively, if I'm barking up the wrong tree please point me to the right
one!

 

Many thanks,

Francois

 

Francois Visagie

 

 

T: +27 (83) 326-4358

F: +27 (86) 511-3490

E: francois.visagie at gmail.com

 

 



More information about the ffmpeg-user mailing list