设置HLS段时间

时间:2016-02-15 23:48:34

标签: linux bash opencv ffmpeg hls

我通过管道将处理过的视频从openCV传递到ffmpeg这里是代码

./OpenCV & \
 tail -n +0 -f out.avi  | ffmpeg -i pipe:0  -hls_time 1 -hls_list_size 0 -hls_wrap 10 -hls_segment_filename '%03d.ts' stream.m3u8 

我的问题是输出的.ts文件不是在一个统一的持续时间内,它们在不同文件之间变换。

这些大部分都是60秒。这意味着连接客户端必须等待第一个流完成才能创建播放列表文件(.m3u8)文件。因此,在这个例子中,它们在实时视频后面大约60秒,如果下一个.ts文件较大,则流式传输将停止,直到完成。如果客户端在创建下一个.ts文件之前尝试播放,则会播放第一个.ts文件。

openCV的帧速率是每秒1帧。

tail将openCV的输出文件(out.avi)更改为stdout。

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

我知道我正在回答我自己的问题,但我已经更改了以下代码

./OpenCV & \
 tail -n +0 -f out.avi  | ffmpeg -i pipe:0  -hls_time 1 -hls_list_size 0 -hls_wrap 10 -hls_segment_filename '%03d.ts' stream.m3u8 `

./OpenCV & \
tail -n +0 -f out.avi  | ffmpeg -i pipe:0 -f hls -g 2 -hls_time 2 -hls_list_size 0 -hls_wrap 10 -hls_segment_filename '%03d.ts' stream.m3u8 `

好像已经成功了。