C++ OpenCV(用C+;+;编程)标准输出通过管道传输到ffmpeg(在bashscript中)?

C++ OpenCV(用C+;+;编程)标准输出通过管道传输到ffmpeg(在bashscript中)?,c++,bash,opencv,ffmpeg,pipe,C++,Bash,Opencv,Ffmpeg,Pipe,我正在使用下面的bash脚本通过管道将OpenCV的输出输出,这是一个out.avi文件,使用tail命令将该文件转换为stdout,并通过管道将输出传输到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 这是可行的,但会导致延迟问题 我尝

我正在使用下面的bash脚本通过管道将OpenCV的输出输出,这是一个out.avi文件,使用tail命令将该文件转换为stdout,并通过管道将输出传输到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++代码,以便使用 CUT> P>将帧写入STDUT。问题是代码>谢谢。使代码正常工作唯一的更改是删除auto并将其声明为

vector::iterator i
imshow( window_name, frame );//show frame
video.write(frame);//rec to avi
cout << frame;
./OpenCV | ffmpeg -i pipe:0  -hls_time 1 -hls_list_size 0 -hls_wrap 10 -hls_segment_filename '%03d.ts' stream.m3u8 
std::vector<uchar> buff;    
cv::imencode(".jpg", frame, buff);
for (auto i = buff.begin(); i != buff.end(); ++i)
    std::cout << *i ;
std::vector<uchar> buff;
cv::imencode(".jpg", frame, buff);
std::ofstream myfile;
myfile.open("example.jpg", std::ios::binary);
for (auto i = buff.begin(); i != buff.end(); ++i)
{
    //std::cout << *i;
    myfile << *i;
}
myfile.close();