Запуск потокового вещания локального пользователя с использованием ffmpeg на веб-платформе - PullRequest
0 голосов
/ 01 июня 2019

Я использую приведенную ниже команду для потоковой передачи экрана рабочего стола.

ffmpeg -f x11grab -r 1 -loglevel panic -s `xdpyinfo | grep 'dimensions:'|awk '{print $2}'` -i $DISPLAY -qscale 0 -f mpegts udp://192.168.3.151:1111

udp: //192.168.3.151: 1111 - это мой потоковый URL

Я вижу прямую трансляцию в медиапроигрывателе для условно-досрочного освобождения (на платформе Linux), но я не вижу этого в кросс-сети (т.е. с Windows PC - в той же сети)

Существует ли какая-либо веб-платформа, чтобы я мог видеть свое потоковое вещание из любого места (Windows или Linux), просто используя уникальный URL-адрес потокового вещания, или мне нужно изменить свою потоковую команду или метод?

Любая помощь очень ценится

1 Ответ

1 голос
/ 01 июня 2019

Я предполагаю, что 192.168.3.151 - это IP-адрес вашего компьютера с Linux, и с указанным URL (udp: //192.168.200.151: 1111) вы транслируете через порт 1111 на своем локальном компьютере, поэтому ожидается, что этот поток будет виден толькоit.

Прежде всего вы можете использовать многоадресный диапазон UDP ( Подробнее см. здесь ) для потоковой передачи экрана рабочего стола в локальную локальную сеть, например:

ffmpeg -f x11grab -r 1 -loglevel panic -s `xdpyinfo | grep 'dimensions:'|awk '{print $2}'` -i $DISPLAY -qscale 0 -f mpegts udp://239.0.0.1:1111

Вы можете видеть поток на других машинах в локальной сети.

Если вы хотите транслировать экран рабочего стола в Интернете, вы должны использовать подходящий кодек, такой как h264 (MP4), и использовать медиа-сервер , такой как Nginx, Wowza или что-то подобное, и транслируйте его с помощью этой команды:

ffmpeg -f x11grab -s `xdpyinfo | grep 'dimensions:'|awk '{print $2}'` -framerate 25 -i $DISPLAY -c:v h264 -preset ultrafast -tune zerolatency -qscale 0 -f mpegts rtmp://<Media_Server_Address>:1935/live/<stream_name>

Media_Server_Address - это домен вашего сервера или IP-адрес.Это может быть ваш веб-сервер или другой сервер, на котором установлен медиа-сервер.

live - это приложение, которое обрабатывает прямые трансляции.У него может быть другое имя, но по умолчанию его имя по умолчанию - live.

stream_name - произвольное имя для потока.

В этом сценарии вы отправляете поток через RTMP на медиасервере, а затем другие могут увидеть его, например, по протоколу HLS через приложение проигрывателя, такое как VLC player, или через тег HTML5 на веб-странице с этим URL:

http://<Media_Server_Address>:1935/live/<stream_name>/playlist.m3u8

Обновление:

Это пример использования Nginx в качестве медиа-сервера:

Конфигурация Nginx:

worker_processes  1;

events {
    worker_connections  1024;
}

rtmp {
    server {
        listen 1935;

        chunk_size 4000;

    application live {
            live on;
            allow publish all;
            allow play all;
        }

    }
}

Команда FFmpeg должна выполняться на локальном ПК для потоковой передачи с рабочего стола локального ПК на медиасервер:

ffmpeg -f x11grab -s `xdpyinfo | grep 'dimensions:'|awk '{print $2}'` -framerate 25 -i $DISPLAY -c:v h264 -preset ultrafast -qscale 0 -f flv rtmp://<Media_Server_Address>:1935/live/localdesktop

Теперь пользователи могут воспроизводить поток на других ПК с использованием VLC с этим URL:

rtmp://<Media_Server_Address>/live/localdesktop

ЕслиТребуется воспроизведение HLS, только файл конфигурации hls должен быть добавлен в файл конфигурации Nginx.тогда пользователи могут использовать поток воспроизведения hls, просто используя этот URL с помощью VLC:

http://<Media_Server_Address>:1935/live/localdesktop/playlist.m3u8

Важно отметить, что в этом случае должна использоваться та же команда ffmpeg.

...