使用 ffmpeg 连接视频时音频/视频不同步:非单调的 TDS 输出

使用 ffmpeg 连接视频时音频/视频不同步:非单调的 TDS 输出

我正在尝试使用 ffmpeg 添加两个视频,但输出的视频/音频不同步(并且快进)。目标是将其放在intro.mp4 原始文件之前clip.flv

我的方法是

  1. 将格式更改clip.flvclip.mp4

    ffmpeg -i clip.flv -q 0 -c copy clip.mp4
    
  2. 连接intro.mp4clip.mp4

    ffmpeg -f concat -safe 0 -i filesToJoin.txt -c copy combinedvideo.mp4
    

    我在命令#2的输出日志中看到此信息

    [mp4 @ 0x3ebcd60] Non-monotonous DTS in output stream 0:0; previous: 392311, current: 391925; changing to 392312. This may result in incorrect timestamps in the output file.
    frame= 1566 fps=0.0 q=-1.0 Lsize=8711kB time=00:00:48.86 bitrate=1460.2kbits/s speed= 272x    
    video:7363kB audio:1294kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.619341%
    

文件元数据

原始源文件clip.flv元数据

  Metadata:
    encoder         : Lavf57.83.100
  Duration: 00:00:40.09, start: 0.010000, bitrate: 1632 kb/s
    Stream #0:0: Video: h264 (High), yuv420p(progressive), 1280x720, 1500 kb/s, 30 fps, 30 tbr, 1k tbn, 60 tbc
    Stream #0:1: Audio: aac (LC), 44100 Hz, stereo, fltp, 160 kb/s

中间文件元intro.mp4数据

  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42mp41
    creation_time   : 2020-06-02T10:36:51.000000Z
  Duration: 00:00:13.21, start: 0.000000, bitrate: 484 kb/s
    Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 130 kb/s, 30 fps, 30 tbr, 30k tbn, 60k tbc (default)
    Metadata:
      creation_time   : 2020-06-02T10:36:51.000000Z
      handler_name    : Alias Data Handler
      encoder         : AVC Coding
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 317 kb/s (default)
    Metadata:
      creation_time   : 2020-06-02T10:36:52.000000Z
      handler_name    : Alias Data Handler

文件clip.mp4元数据

    Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.83.100
  Duration: 00:00:40.01, start: 0.000000, bitrate: 1635 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 1500 kb/s, 30 fps, 30 tbr, 16k tbn, 60 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 160 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

我尝试过的事情

  • 正如你所看到的,两个视频的帧速率相同,但是不同的时间尺度,我尝试在合并视频之前更改其中一个视频的时间刻度以匹配另一个视频,但没有成功。对于时间刻度更改,我使用了此命令

    ffmpeg -i clip.mp4 -video_track_timescale 30000 clip_ts30000.mp4
    
  • 我曾经看过 SO 上的类似问题,但没有成功。

答案1

https://video.stackexchange.com/a/22941

我认为您可能需要转换为中间 MPEG-TS 格式,然后将它们连接起来。

相关内容