ffmpeg HLS定时因.ts文件损坏而中断

时间:2019-08-04 12:00:12

标签: ffmpeg http-live-streaming m3u8

所以我有一个看起来像这样的.m3u8文件:

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-ALLOW-CACHE:YES
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:6.006,
seg-1-v1-a1.ts
#EXTINF:4.004,
seg-2-v1-a1.ts
#EXTINF:10.010,
eg-3-v1-a1.ts
#EXTINF:10.010,
seg-4-v1-a1.ts
#EXTINF:10.010,
seg-5-v1-a1.ts
#EXT-X-ENDLIST

我已经将所有段文件放在一个文件夹中。 问题是“ seg-4-v1-a1.ts”损坏了(只有5 MB,应该是10MB),当我尝试使用命令ffmpeg -i "M3U8URLS.mux" -c copy output.mp4将它们转换为mp4时,我感觉很糟音频和视频同步。

ffmpeg的输出为

[hls,applehttp @ 000002e276a868a0] Opening 'crypto:seg-1-v1-a1.ts' for reading
[hls,applehttp @ 000002e276a868a0] Opening 'crypto:seg-2-v1-a1.ts' for reading
[hls,applehttp @ 000002e276a868a0] Opening 'crypto:seg-3-v1-a1.ts' for reading
[hls,applehttp @ 000002e276a868a0] Opening 'crypto:seg-4-v1-a1.ts' for reading
[mpegts @ 00000204393ed020] PES packet size mismatch
[hls,applehttp @ 000002e276a868a0] Opening 'crypto:seg-5-v1-a1.ts' for reading
frame=35130 fps=1927 q=-1.0 Lsize= 1017088kB time=00:00:40.12 bitrate=5667.5kbits/s speed=80.6x

如何根据#EXTINF信息告诉ffmpeg它应该保持同步?

1 个答案:

答案 0 :(得分:0)

您必须修改播放列表,并在损坏的文件后设置#EXT-X-DISCONTINUITY。