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