VLCJ JPanel для воспроизведения видео потока предварительного просмотра

Это уже третий и последний раз, когда я попытаюсь задать вопрос о Stackru, и мой подход очень специфичен.

У меня есть Java-приложение, которое берет рабочий стол и кодирует его с помощью libx264, а затем передает его с RTMP в twitch.tv. Моя проблема в том, что я хочу предварительно просмотреть поток, и лучший способ, который я нашел, это добавить видеоплеер vlcj в jpanel. И это было сделано.

Но что я не могу сделать: это отправить поток ОБА на Twitch и на экран. И чтобы этот экран взял этот поток и отобразил его.

Стример - это avconv, используемый в libav. (FFmpeg, но для Ubuntu) Bash-код для его загрузки:

`#! /bin/bash
clear

INRES="$1"
OUTRES="$2"
FPS="$3"
QUAL="$4"

STREAM="$5"

avconv \
-f x11grab -s $INRES -r $FPS -i :0.0 -qcomp 1.0 \
-f alsa -ac 2 -i pulse \
-vcodec libx264 -s $OUTRES -preset $QUAL -g 2 \
-acodec libmp3lame -ar 44100 -threads 6 -q:a 3 -b:a 712000 -bufsize 512k \
-f flv $STREAM`

Панель vlcj может даже смотреть видео на YouTube или подергивать видео, но я хочу, чтобы она имела низкую задержку.

Любая помощь приветствуется. Благодарю.

1 ответ

Этот пример в тестовых источниках vlcj передает поток RTP и одновременно отображает видео в JFrame.

https://github.com/caprica/vlcj/blob/vlcj-2.0/src/test/java/uk/co/caprica/vlcj/test/streaming/StreamRtpDuplicate.java

Вы должны быть в состоянии адаптировать этот пример к вашим собственным конкретным потребностям, например, если вы транслируете с другим протоколом.

Ключ должен установить правильные параметры потокового вывода vlc "sout" при воспроизведении мультимедиа, в частности, чтобы "продублировать" вывод на "display":

:sout=#duplicate{dst=display,dst=rtp{dst=230.0.0.1,port=5555,mux=ts}}

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