【问题标题】:Can I store Gstreamer output to buffer using opencv . If I add appsink in pipline我可以使用 opencv 将 Gstreamer 输出存储到缓冲区吗?如果我在管道中添加appsink
【发布时间】:2020-08-06 08:00:06
【问题描述】:

您好,我是 gstreamer 的新手。到目前为止,我正在使用 c++ 中的 opencv 中的 gstreamer 管道对帧进行编码。但现在我不想转储每一帧。我想对所有帧进行编码并将其存储在一个大缓冲区中,并且无论何时我都会转储该缓冲区。那么如何在 gstreamer opencv 中进行应用程序接收。

在我的代码 sn-p 下方,我正在编码每一帧并转储

cv::VideoWriter out("appsrc !  videoconvert ! video/x-raw,width=1280,height=720 ! v4l2h264enc ! avimux ! filesink location=hellotest.avi",cv::CAP_GSTREAMER,0,30,cv::Size(1280,720),true);
out.write(Frame);

但我希望 appsink 将所有编码数据存储到缓冲区中,我不想转储或写入它。

【问题讨论】:

    标签: opencv gstreamer opencv3.0 encoder gstreamer-1.0


    【解决方案1】:

    简短的回答是否定的。

    首先,VideoWriter 不能同时读写。您可以做的是创建两个使用ipcpipeline 元素相互通信的管道。

    例如

    cv::VideoWriter out("appsrc !  videoconvert ! video/x-raw,width=1280,height=720 ! v4l2h264enc ! ipcpipelinesink",...);
    cv::VideoCapture cap("ipcpipelinesrc ! ... ! appsink")
    

    但这不会为您提供很多选择,因为VideoCapture 支持的数据格式非常有限,如果您查看souce code

    // we support 11 types of data:
    //     video/x-raw, format=BGR   -> 8bit, 3 channels
    //     video/x-raw, format=GRAY8 -> 8bit, 1 channel
    //     video/x-raw, format=UYVY  -> 8bit, 2 channel
    //     video/x-raw, format=YUY2  -> 8bit, 2 channel
    //     video/x-raw, format=YVYU  -> 8bit, 2 channel
    //     video/x-raw, format=NV12  -> 8bit, 1 channel (height is 1.5x larger than true height)
    //     video/x-raw, format=NV21  -> 8bit, 1 channel (height is 1.5x larger than true height)
    //     video/x-raw, format=YV12  -> 8bit, 1 channel (height is 1.5x larger than true height)
    //     video/x-raw, format=I420  -> 8bit, 1 channel (height is 1.5x larger than true height)
    //     video/x-bayer             -> 8bit, 1 channel
    //     image/jpeg                -> 8bit, mjpeg: buffer_size x 1 x 1
    // bayer data is never decoded, the user is responsible for that
    // everything is 8 bit, so we just test the caps for bit depth 
    

    【讨论】:

    • 收到此错误 GStreamer 警告:打开写入器管道时出错:无法将 jpegenc0 链接到 ipcpipelinesrc0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多