Простая циклическая трансляция видеороликов по протоколу RTSP

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

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

Для организации потокового вещания мы будем использовать широко распространенный проигрыватель видео — VLC Media Player, который позволяет осуществлять широкий спектр преобразований видео с помощью встроенных фильтров и расширений.

К примеру, вы можете преобразовать видео в набор кадров, сохранив их в выбранный каталог в виде JPG или PNG, изменить яркость, контрастность и другие параметры видео на лету. Эти возможности выделяют VLC из ряда других проигрывателей, превращая его в удобный инструмент как для преобразования видео так и для осуществления трансляций.

Сейчас мы рассмотрим как осуществить RTSP трансляцию файлов с помощью VLC. Для начала выполним зацикленную трансляцию одного файла file.mp4 посредством протокола RTSP. Для этого вы можете использовать запуск проигрывателя в режиме командной строки со следующими аргументами:

vlc -I dummy --loop file.mp4 :sout=#gather:rtp{sdp=rtsp://:8554/} :network-caching=500 :sout-all :sout-keep

Этот пример тестировался в ОС Linux, в случае, если вы используете ОС Windows, вам необходимо заменить vlc на cvlc, чтобы запустить VLC в консольном режиме. Рассмотрим аргументы, которые здесь используются:

  • -I dummy применяется для того, чтобы не отображать интерфейс проигрывателя, обеспечивая работу в режиме командной строки;
  • -- loop применяется для повтора проигрывания
  • sout=#gather:rtp{sdp=rtsp://:8554/} определяет, что будет производиться проигрывание в протокол RTSP, при этом поток будет доступен посредством порта 8554 на всех IP узла (0.0.0.0);
  • :network-caching=1500 время кэширования видео в ms для повышения стабильности потока;
  • :sout-all — осуществлять потоковое вещание всех потоков;
  • :sout-keep — не закрывать потоковое вещание при завершении текущего файла.

Теперь вы можете проверить доступность трансляции, открыв в VLC RTSP адрес rtsp://127.0.0.1:8554/:

vlc rtsp://127.0.0.1:8554/

Если вы хотите использовать аутентификацию при вещании RTSP, добавьте следующие аргументы к команде:

  • --sout-rtsp-user username
  • --sout-rtsp-pwd password

Организация трансляции плейлиста VLC

Создайте плейлист с помощью VLC и сохраните его в виде файла playlist.xspf. Теперь вы можете выполнить его проигрывание с помощью VLC аналогичным образом, указав его вместо имени файла file.mp4:

vlc -I dummy --loop playlist.xspf :sout=#gather:rtp{sdp=rtsp://:8554/} :network-caching=500 :sout-all :sout-keep

Видео будут проигрываться в порядке, определенном плейлистом, при этом после завершения проигрывания произойдет переход на первый файл, определенный в плейлисте. Если вы хотите, чтобы видео проигрывались в случайном порядке, добавьте аргумент --random.