令人眼花缭乱的问题 - FFmpeg段过滤器desyncs视频

时间:2018-05-09 23:40:42

标签: video ffmpeg split synchronization segment

我需要分割一个大的(72GB)Prores视频文件并合并这些段以获得与原始文件相同的文件。

./ffmpeg -i video.mov -codec copy -f segment -segment_time 300 -segment_list list.ffcat -reset_timestamps 1 -v error chunk_%d.mov

不幸的是,运行此命令后的段在使用Quicktime Player播放几秒钟后会失去同步。有趣的是,搜索,倒带或快速转发似乎正确地重新同步视频至少几秒钟。

每当写入新段时,都会出现以下警告:

[segment @ 0x7f87ae001200] Opening 'chunk_0.mov' for writing
[mov @ 0x7f87ad807200] Valid timecode frame rate must be specified. Minimum value is 1

然而,使用-r 24设置帧率并不会有帮助。

一些可能相关的元数据:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'A004_04121423_C001.mov':
  Duration: 00:13:31.25, start: 0.000000, bitrate: 710117 kb/s
    Stream #0:0(eng): Video: prores (apch / 0x68637061), yuv422p10le(bt709, progressive), 3840x2160, 707415 kb/s, SAR 1:1 DAR 16:9, 24 fps, 24 tbr, 24 tbn, 24 tbc (default)
    Metadata:
      creation_time   : 2018-04-12T20:23:16.000000Z
      handler_name    : ?Apple Alias Data Handler
      timecode        : 14:23:16:02
    Stream #0:1(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, stereo, s32 (24 bit), 2304 kb/s (default)
    Metadata:
      creation_time   : 2018-04-12T20:23:16.000000Z
      handler_name    : ?Apple Alias Data Handler
      timecode        : 14:23:16:02
    Stream #0:2(eng): Data: none (tmcd / 0x64636D74) (default)
    Metadata:
      creation_time   : 2018-04-12T20:23:16.000000Z
      handler_name    : ?Apple Alias Data Handler
      timecode        : 14:23:16:02

Output #0, segment, to 'chunk_%d.mov':
    Stream #0:0(eng): Video: prores (apch / 0x68637061), yuv422p10le(bt709, progressive), 3840x2160 [SAR 1:1 DAR 16:9], q=2-31, 707415 kb/s, 24 fps, 24 tbr, 12288 tbn, 24 tbc (default)
    Metadata:
      creation_time   : 2018-04-12T20:23:16.000000Z
      handler_name    : ?Apple Alias Data Handler
      timecode        : 14:23:16:02
    Stream #0:1(eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, stereo, s32 (24 bit), 2304 kb/s (default)
    Metadata:
      creation_time   : 2018-04-12T20:23:16.000000Z
      handler_name    : ?Apple Alias Data Handler
      timecode        : 14:23:16:02
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)

我在OS X上。

非常感谢你在这个问题上的时间和帮助!我当然希望我不会遗漏一些明显的东西:)

更新(5月10日):比较原始视频文件与细分,我发现了一些有趣的差异。 Adobe Premiere报告t 原始视频具有以下属性:

QuickTime Details:
Movie contains 1 video track(s), 1 audio track(s), 0 closed caption track(s), **and 1 timecode track(s).**

Video:
There are 19470 frames with a **duration of 1/24th.**

Video track 1:
Duration is **0:13:31:06**

Video data block #1:
Frame Size = 3840 x 2160
Compressor = 
**Quality = Most (-2623.00)
Temporal = Most (1.00)**

Timecode data block #1:
Start Time = 14:23:16:02
Reel name = 

另一方面,当检查将这些片段拼接在一起时产生的视频时,我们会发现以下内容:

QuickTime Details:
Movie contains 1 video track(s), 1 audio track(s), 0 closed caption track(s), **and 0 timecode track(s).**

Video:
There are 19470 frames with a **duration of 41/1000ths.**

Video track 1:
Duration is **0:01:06:00**

Video data block #1:
Frame Size = 3840 x 2160
Compressor = 
**Quality = Normal (3.00)
Temporal = Normal (3.00)**

1 个答案:

答案 0 :(得分:0)

虽然我很想找到仅使用FFmpeg的解决方案,但我发现使用Adobe Media Encoder的“Stitch Clips Together”功能给了我一个没有任何明显打嗝的输出。

如果我要使用FFmpeg解决它,我会尝试找出为什么它将帧持续时间从1/24更改为41/1000。 Media Encoder的输出保留了1/24的帧持续时间,并且没有明显的问题。