Как воспроизвести один поток, умножив VLC плеер? - PullRequest
1 голос
/ 12 октября 2011

Я пытаюсь транслировать видео этой командой:

$ vlc [path to file] --sout udp:// [destination path]

А также в пункте назначения я запускаю двух VLC-игроков, которые воспроизводят один поток командой:

$ vlc udp:// [source path]

Когда я запускаю первого игрока, он воспроизводит видео, но когда я запускаю второго игрока, первый игрок останавливается и только второй игрок воспроизводит поток.

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

Ответы [ 2 ]

0 голосов
/ 18 октября 2011

В вашем случае было бы полезно иметь некоторую утилиту, которая будет реплицировать UDP-пакеты, отправленные на определенный порт, на несколько других портов на той же машине.

Реализация этого приложения должна быть тривиальной.

0 голосов
/ 18 октября 2011

Я предполагаю, что путь назначения - это IP-адрес и порт проигрывателя, что означает, что вы направляете поток непосредственно к этой конечной точке.Когда вы открываете поток на проигрывателе, он связывается с этим сокетом и читает пакеты.После этого пакеты «пропали».Обычно проигрыватель резервирует адрес, поэтому никакая другая программа не может открыть там сокет, но, похоже, здесь этого не происходит, поэтому второй игрок захватывает тот же сокет и получает пакеты UDP.

Если оба игроканаходятся на том же хосте, многоадресная рассылка тоже не будет работать.Если вам нужно поддерживать фиксированное количество игроков, вы можете позволить VLC дублировать вывод;

- sout '#duplicate {dst = rtp {mux = ts, dst = 192.168.1.10, port =50002}, dst = rtp {mux = ts, dst = 192.168.1.40, port = 50004}} '

Если вам нужно динамически поддерживать неизвестное количество клиентов, вам необходимо поместить потоковый сервер вперемешать.Какой из них действительно зависит от того, чего вы хотите достичь.Возможно, VLC может выступать в качестве сервера потоковой передачи напрямую, но я никогда не пробовал.

...