我的目标是从捕获卡(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代码:
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);我的环境:
我该怎么处理呢?
提前谢谢。
发布于 2016-06-30 06:47:07
问题是你把GST-Laune-1.0留在了那里,这当然是行不通的。
这是一种适当的方式:
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的另一个分支。
https://stackoverflow.com/questions/38105891
复制相似问题