FFmpeg concat 命令更改 start_time(ts 块连接)
FFmpeg concat command changes start_time (ts chunks concatenation)
我使用 ffmpeg 命令连接 ts 块:
ffmpeg -i "concat:input1.ts|input2.ts" -c copy output.ts
例如视频由 10 个 ts 块组成,我们只连接最后两个块(第 9 个和第 10 个 ts 块)。我们流式传输由旧的 (1-8) ts 块和新的联合 ts 块组成的视频。结果联合块的播放有问题。经过调查我们发现在 joint ts chunk 中一些属性是不同的:
start_pts=127141
start_time=1.412678
尽管在原始(第 9 个)ts 块中它们是:
start_pts=2021483
start_time=21.213400
开始时间和start_pts已更改,我们假设播放问题与ts chunk中的此属性有关。
有没有办法为结果联合 ts 块保留旧值(start_pts 和 start_time)?
使用
ffmpeg -copyts -i "concat:in1.ts|in2.ts" -muxpreload 0 -muxdelay 0 -c copy joint.ts
您需要 -copyts
将输入时间戳保存到混合器阶段。并且两个多路复用器输出选项设置为 0 以防止 MPEG-TS 多路复用器进一步修改 TS。
我使用 ffmpeg 命令连接 ts 块:
ffmpeg -i "concat:input1.ts|input2.ts" -c copy output.ts
例如视频由 10 个 ts 块组成,我们只连接最后两个块(第 9 个和第 10 个 ts 块)。我们流式传输由旧的 (1-8) ts 块和新的联合 ts 块组成的视频。结果联合块的播放有问题。经过调查我们发现在 joint ts chunk 中一些属性是不同的:
start_pts=127141
start_time=1.412678
尽管在原始(第 9 个)ts 块中它们是:
start_pts=2021483
start_time=21.213400
开始时间和start_pts已更改,我们假设播放问题与ts chunk中的此属性有关。
有没有办法为结果联合 ts 块保留旧值(start_pts 和 start_time)?
使用
ffmpeg -copyts -i "concat:in1.ts|in2.ts" -muxpreload 0 -muxdelay 0 -c copy joint.ts
您需要 -copyts
将输入时间戳保存到混合器阶段。并且两个多路复用器输出选项设置为 0 以防止 MPEG-TS 多路复用器进一步修改 TS。