gpt4 book ai didi

java - OpenCV 和 Gstreamer 流式传输实时视频

转载 作者:行者123 更新时间:2023-12-01 09:45:14 25 4
gpt4 key购买 nike

我的目标是将视频流从采集卡(Blackmagic Decklink)传输到 OpenCV,并将直播流传输到 red5 或任何其他 rtmp 服务器。

所以,我尝试在 gstreamer 上使用两个分支完成,命令如下,工作正常。但是,当与 OpenCV 一起使用时,只需将黑帧流式传输到 rtmp 服务器,顺便说一下,opencv 工作得很好。

Gstreamer 命令:

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

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);

我的环境:

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

我该如何处理?

提前致谢。

最佳答案

问题是你把 gst-launch-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问题..

请注意,将 x264enc 与 tee 一起使用会出现问题..因为有时 x264enc 想要预卷大量帧,这可能会淹没 tee 的其他分支..

关于java - OpenCV 和 Gstreamer 流式传输实时视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38105891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com