设置 HLS 分段时间
Setting HLS segment times
我正在通过管道将经过处理的视频从 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 将名为 (out.avi) 的 openCV 输出文件更改为标准输出。
任何帮助都会很棒。
我知道我在回答我自己的问题,但我已经更改了下面的代码
./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 `
看来成功了。
我正在通过管道将经过处理的视频从 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 将名为 (out.avi) 的 openCV 输出文件更改为标准输出。
任何帮助都会很棒。
我知道我在回答我自己的问题,但我已经更改了下面的代码
./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 `
看来成功了。