【发布时间】:2016-05-30 14:08:29
【问题描述】:
我正在使用以下 bash 脚本来管道输出 OpenCV 的输出,这是一个 out.avi 文件,使用 tail 命令将该文件转换为标准输出并将输出管道传输到 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
这可行,但会导致延迟问题。
我尝试更改 C++ 代码,以便使用 cout << frame; 将帧写入标准输出,这是其中的一些代码。
imshow( window_name, frame );//show frame
video.write(frame);//rec to avi
cout << frame;
从上面的代码中,我得到一个窗口来显示处理后的图像,帧以 avi 格式保存,从最后一行我打印到命令行中帧的像素值。
现在我尝试使用以下 Bash 脚本将此标准输出通过管道传输到 ffmpeg,但没有成功。
./OpenCV | ffmpeg -i pipe:0 -hls_time 1 -hls_list_size 0 -hls_wrap 10 -hls_segment_filename '%03d.ts' stream.m3u8
我也试过
./OpenCV | ffmpeg -i pipe:0 -f rawvideo -pix_fmt bgr24 -s 480x320 -hls_time 1 -hls_list_size 0 -hls_wrap 10 -hls_segment_filename '%03d.ts' stream.m3u8
有人有什么想法吗?
【问题讨论】:
标签: c++ bash opencv ffmpeg pipe