Search code examples
ffmpeg

ffmpeg change timecode metadata inside video file


I have problems to change timecode inside metadata of a video file "mov"

 ffmpeg -i input.mov -ss 0 -map 0 -acodec copy -vcodec copy -timecode 01:20:10:00 -metadata:s:2:0 timecode=01:20:10:00 -metadata:s:1:0 timecode=01:20:10:00 -metadata:s:0:2 -metadata:s:0:2  timecode=01:10:10:00 output.mov

I need to put my own timecode to the file but this command not works.

The console give me:

  mov @ 00000225287fdc00] You requested a copy of the original timecode track so timecode metadata are now ignored
Output #0, mov, to 'convert_A019_02230134_C186.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 537199360
    compatible_brands: qt  
    timecode        : 01:20:10:00
    encoder         : Lavf58.11.101
    Stream #0:0(eng): Video: prores (apcn / 0x6E637061), yuv422p10le(bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 122315 kb/s, 25 fps, 25 tbr, 12800 tbn, 25 tbc (default)
    Metadata:
      creation_time   : 01:10:10:00
      handler_name    : ?Apple Alias Data Handler
      encoder         : Apple ProRes 422
      timecode        : 01:10:10:00
    Stream #0:1(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, stereo, s32 (24 bit), 2304 kb/s (default)
    Metadata:
      creation_time   : 2020-02-23T00:34:02.000000Z
      handler_name    : ?Apple Alias Data Handler
      timecode        : 01:20:10:00
    Stream #0:2(eng): Data: none (tmcd / 0x64636D74), 0 kb/s (default)
    Metadata:
      creation_time   : 2020-02-23T00:34:02.000000Z
      handler_name    : ?Apple Alias Data Handler
      timecode        : 01:20:10: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=  467 fps=0.0 q=-1.0 Lsize=  281452kB time=00:00:18.64 bitrate=123693.3kbits/s speed=71.1x    
video:278913kB audio:2531kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.002533%

I don't understand why it does not modify the timecode in the mov file. The old timecode remains.


Solution

  • Exclude the original timecode data using negative mapping.

    ffmpeg -i input.mov -map 0 -map -0:d -c copy -timecode 01:20:10:00 output.mov