由于 .ts 文件损坏,ffmpeg HLS 计时中断

标签 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

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

最佳答案

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

关于由于 .ts 文件损坏,ffmpeg HLS 计时中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57346378/

相关文章:

ffmpeg 从本地 m3u8 获取 md5

php - 如何使用 PHP-FFMpeg 将视频修剪 4 个片段到 4 秒?

FFMPEG RGB to YUV420P : Warning: data is not aligned! 这可能会导致速度损失

ios - MPMovieplayerViewController 有没有办法检测视频是否是流?

ios - HLS 流式传输到 IOS 设备

ffmpeg - 为什么当我手动更改 m3u8 文件时 m3u8 文件播放不好

video - 如何在m3u8播放列表中循环播放TS文件

ffmpeg - 重新复用为 MKV 但使用 FFmpeg 添加所有流

video-streaming - 有没有办法在桌面 Chrome/HTML5 播放器中添加对 HLS 的支持?

Android MediaPlayer 仅播放 m3u8 音频流