Linux 设置HLS段时间
我正在通过管道将经过处理的视频从openCV传递到ffmpeg,下面是代码Linux 设置HLS段时间,linux,bash,opencv,ffmpeg,http-live-streaming,Linux,Bash,Opencv,Ffmpeg,Http Live Streaming,我正在通过管道将经过处理的视频从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秒。这意味着连接客户端必须等待
./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)更改为标准输出
任何帮助都会很好。我知道我在回答我自己的问题,但我已经更改了下面的代码
./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 `