OpenCV и Gstreamer транслируют живое видео

Моя цель - получить видеопоток с карты захвата (Blackmagic decklink) в OpenCV и в прямом эфире на red5 или любой другой rtmp-сервер.

Итак, я попытался сделать две ветки на gstreamer с командой ниже работает правильно. Но при использовании с OpenCV просто направляйте черные кадры на сервер rtmp, кстати, opencv работает хорошо.

Команда Gstreamer:

gst-launch-1.0 -v autovideosrc! имя тройника = t t.! видеоконвертер! видеомасштаб очередь! x264enc pass=pass1 threads=4 bitrate=5000 tune=zerolatency! очередь! flvmux streamable=true! rtmpsink location="rtmp://127.0.0.1/live/stb live=1" max-latess = 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 Wrapper
  • Gstreamer 1.8.1

Как я могу справиться с этим?

Заранее спасибо.

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

Вдохновленный этим вопросом..

И имейте в виду, что существуют проблемы с использованием x264enc вместе с tee.. потому что иногда x264enc хочет предварительно обработать много кадров, которые могут затопить другую ветвь tee..

Другие вопросы по тегам