首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV和Gstreamer流媒体直播视频

OpenCV和Gstreamer流媒体直播视频
EN

Stack Overflow用户
提问于 2016-06-29 17:00:15
回答 1查看 2.2K关注 0票数 0

我的目标是从捕获卡(Blackmagic )获取视频流到OpenCV,并将视频流实时传输到red5或任何其他rtmp服务器。

所以,我试着用gstreamer的两个分支完成了,命令在下面是正常工作的。但是,当与OpenCV一起使用时,只将黑色帧流到rtmp服务器,顺便说一句,opencv工作得很好。

Gstreamer指挥部:

gst-启动-1.0 -v自动录像机!t. name=t t.!视频转换!视频信号!排队!x264enc pass=pass1 threads=4 bitrate=5000 tune=zerolatency!排队!flvmux streamable=true!Rtmp接收器location="rtmp://127.0.0.1/live/stb live=1“最大值-延迟=100 t.!视频/x-raw,width=1280,height=720!应用汇

OpenCV代码:

代码语言:javascript
复制
String gstSentence = "gst-launch-1.0 -v autovideosrc ! tee name=t " +
                "t. ! videoconvert ! videoscale ! queue ! x264enc pass=pass1 threads=4 bitrate=5000 tune=zerolatency  " +
                "! queue ! flvmux streamable=true ! rtmpsink location=\"rtmp://127.0.0.1/live/stb live=1\" max-lateness=100 " +
                "t. ! video/x-raw,width=1280,height=720 ! appsink";

        System.out.println(gstSentence);
        videoCapture = new VideoCapture(gstSentence);

我的环境:

  • Ubuntu 16.04
  • OpenCV 3.1 - Java包装器
  • Gstreamer 1.8.1

我该怎么处理呢?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-06-30 06:47:07

问题是你把GST-Laune-1.0留在了那里,这当然是行不通的。

这是一种适当的方式:

代码语言:javascript
复制
String gst = "autovideosrc ! tee name=t " + 
             "t. ! videoconvert ! videoscale ! queue ! x264enc pass=pass1 threads=4 bitrate=5000 tune=zerolatency  " +
             "! queue ! flvmux streamable=true ! rtmpsink location=\"rtmp://127.0.0.1/live/stb live=1\" max-lateness=100 " +
             "t. ! video/x-raw,width=1280,height=720 ! appsink";

videoCapture = new VideoCapture(gstSentence);

this问题的启发。

请注意,在使用tee的同时还存在使用x264enc的问题。因为有时x264enc想要预先录制很多帧,这些帧可能会淹没tee的另一个分支。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38105891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档