ffmpeg setpts 应用统一偏移而不重新编码

Vin*_*nay 5 video ffmpeg pts offset

我有一系列视频,我正在将这些视频转换.mov.ts,然后为其创建 HLS 播放列表。我能够找出任何给定视频的音频和视频流的结束点,并在转换序列中的后续视频时应用该结束(累积)偏移量。例如:

ffmpeg -y -i 1.mov \
  -filter:a "asetpts=PTS-STARTPTS+367534" \
  -filter:v "setpts=PTS-STARTPTS+363000" \
  -codec:v libx264 -crf 18 -preset veryfast \
  -acodec aac -muxdelay 0 1.ts
Run Code Online (Sandbox Code Playgroud)

这有效,但需要相当数量的 CPU。我希望能够理想地复制视频/音频流。有什么方法可以在.ts不重新编码整个文件的情况下为文件的音频/视频流应用统一的 pts 偏移量?

Gya*_*yan 4

执行此操作的名义方法是

ffmpeg -y -i 1.mov -c copy -output_ts_offset 4.54 -muxdelay 0 -muxpreload 0 1.ts
Run Code Online (Sandbox Code Playgroud)

如果您需要对流应用不同的偏移量n,那么您需要生成n每个输出 1 个映射流及其唯一偏移量的输出。将所有输出重新合并为一个并-copyts添加。