2016-06-29 41 views
0

キャプチャカード(Blackmagic decklink)からOpenCVへのビデオストリームを取得し、ライブストリームをred5または他のrtmpサーバーに送るという私の目的。OpenCVとGstreamerストリーミングライブビデオ

だから、gstreamerで2つのブランチを使ってみましたが、以下のコマンドが正しく動作しています。しかし、OpenCVを使ってrtmpサーバにブラックフレームをストリームするだけで、opencvはうまく動作します。

GStreamerのコマンド:

GST-打ち上げ-1.0 -v autovideosrc!ティー名= t t。 !ビデオコンバート! videoscale!待ち行列! x264encパス=パス1スレッド= 4ビットレート= 5000 チューン=ゼロ化!待ち行列! flvmux streamable = true! rtmpsink location = "rtmp://127.0.0.1/live/stb live = 1" max-lateness = 100 t。 ! ビデオ/ x-raw、幅= 1280、高さ= 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

どうすれば対処できますか?

ありがとうございます。

答えて

1

問題は、あなたがgst-launch-1.0を残していて、もちろんそれがうまく動作しないということです。

これは適切な方法です..

this質問に触発さ
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); 

そして、時にはx264encはのプリロールたくさんしたいので...ティーと一緒にx264encを使用して問題があることに注意してくださいフレームの残りの部分を溢れさせる可能性があります。

+0

OpenCVはうまく動作しますが、RTMPストリームはまだ黒です。どうすれば対処できますか? RTMPとx264encを変更する必要がありますか? – erdoganonur