ffmpeg setpts 在不重新编码的情况下应用统一偏移

ffmpeg setpts apply uniform offset without re-encoding

我有一系列视频正在从 .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

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

理论上的方法是

ffmpeg -y -i 1.mov -c copy -output_ts_offset 4.54 -muxdelay 0 -muxpreload 0 1.ts

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