Ffmpeg 两个.ts文件之间缺少一帧
我有两个文件:fileSequence0.ts和fileSequence1.ts,我使用ffmpeg检查每个文件的帧数,结果是:Ffmpeg 两个.ts文件之间缺少一帧,ffmpeg,http-live-streaming,Ffmpeg,Http Live Streaming,我有两个文件:fileSequence0.ts和fileSequence1.ts,我使用ffmpeg检查每个文件的帧数,结果是: fileSequence0.ts,29帧 fileSequence1.ts,28帧 然后我将这两个文件合并为一个: ffmpeg -i 'concat:fileSequence0.ts|fileSequence1.ts' -codec copy merge.mp4 现在,merge.mp4有58帧,而不是57=29+28帧,这是关于什么的,有人能指出我缺少什么知
- fileSequence0.ts,29帧
- fileSequence1.ts,28帧
ffmpeg -i 'concat:fileSequence0.ts|fileSequence1.ts' -codec copy merge.mp4
现在,merge.mp4有58帧,而不是57=29+28帧,这是关于什么的,有人能指出我缺少什么知识吗
这里提到的文件可以在以下位置下载:第二个文件
fileSequence1.ts
也有29帧而不是28
由于最初分割的方式,如果您想单独播放,将无法获得一帧,因为它缺少所需的SPS/PPS数据:
[h264 @ 0x4111460] non-existing PPS 0 referenced
Last message repeated 1 times
[h264 @ 0x4111460] decode_slice_header error
[h264 @ 0x4111460] non-existing PPS 0 referenced
[h264 @ 0x4111460] decode_slice_header error
[h264 @ 0x4111460] no frame!
由于SPS/PPS存在于第一个文件中,当您连接时,它将首先读取fileSequence0.ts
它将能够解码丢失的帧,因此结果是正确的值58
通过颠倒concat的顺序,您可以很容易地看到这一点:
ffmpeg -i 'concat:fileSequence1.ts|fileSequence0.ts' -codec copy merge.mp4
此命令导致57帧,因为它无法解码第一帧。非常感谢!我正在用iOS上的Avassetrader进行视频解码,它还告诉
fileSequence1.ts
有28帧,而不是29帧。现在我必须学习PPS的东西。@ideawu它有29个,但无法解码一个。再次在SOThanks上看到维基百科和这个!你真是个好人!