有时 HLS 分段似乎无法正常工作。我的 TS 文件会一直增大,直到驱动器已满,但分段却无法进行。我的大多数流都可以完美运行数周(使用相同的命令行)。
我对我的一个有问题的源流(FFPROBE 输出)了解多少: https://justpaste.it/5d0px
我的命令行如下所示:
/root/bin/ffmpeg -loglevel 16 -probesize 10M -analyzeduration 10M -i http://host/streams/stream.m3u8 -map 0:1 -map 0:0 -c:a copy -c:v copy -f hls -hls_time 10 -hls_flags delete_segments -hls_base_url http://host/ts/ -hls_segment_filename /var/media/ts/stream_%03d.ts /var/media/playlist/stream.m3u8
我正在将 FFMPEG 活动记录到日志文件中,当我的驱动器已满时,我只看到一个错误:
av_interleaved_write_frame():设备上没有剩余空间
写入 /var/media/playlist/stream.m3u8 的预告片时出错:设备上没有剩余空间
我尝试过这些 FFMPEG 版本:N-93765-gfcc01ba、4.1.3
HLS m3u8 文件看起来不错,持续时间也还行,但最后的 TS 文件会不断增大,直到我的驱动器满了。使用 Ramdrive 存储 TS 文件。
编辑: 一些更新:以日志级别 48 运行 FFMPEG 一整天:
- 日志文件非常大,大约 790MB,所以我只分享我遇到的错误。当然,如果你需要,我会上传它。
- 分段停止在第 9538 个分段文件处(请参阅上面的 HLS 设置)分段停止时我只看到此错误:
输出流 0:0 中的非单调 DTS;之前:8584618042,当前:307231408;更改为 8584618043。这可能会导致输出文件中的时间戳不正确。
在我的生产服务器上,大多数 mystreams 都在运行,我编写了一个简单的 Python 脚本,用于检测 TS 文件是否大于 20MB(TS 文件通常最大为 2 兆字节)
这是我的结果:
2019-05-21 08:02:02:/var/media/ts/tlc_9538.ts 大于 20MB
2019-05-21 08:02:03:/var/media/ts/eurosport_9538.ts 大于 20MB
2019-05-21 08:02:04:/var/media/ts/digi_sport1_9538.ts 大于 20MB
2019-05-21 09:27:01:/var/media/ts/travel_9538.ts 大于 20MB
2019-05-21 09:48:01:/var/media/ts/digi_sport2_9538.ts 大于 20MB
2019-05-21 11:21:01:/var/media/ts/digi_world_9538.ts 大于 20MB
2019-05-21 11:22:01:/var/media/ts/history_9538.ts 大于 20MB
2019-05-21 12:39:01:/var/media/ts/viasat_history_9538.ts 大于 20MB
如您所见,此事件发生在第 9538 个 TS 文件中。这有什么原因吗?