Есть ли простой способ транслировать видео с ffmpeg в icesast? Исходное видео в video/x-matroska
формате. Сами потоки в разных форматах (mpeg, vorbis, aac и т. д.). Я хочу, чтобы ffmpeg сам определял источник, а затем транскодировал его во что угодно, воспроизводимое браузерами «на лету», сохраняя исходное разрешение и соотношение сторон. video/webm
подойдет. Я пробовал сделать это (включая игру с выходными форматами):
ffmpeg -i source.mkv -vcodec libvpx -cpu-used -5 -deadline realtime -content_type video/webm\
icecast://source:hackme@localhost:8000/vstream.webm
Но поток не воспроизводится, а соединения приводят к завершению работы ffmpeg со следующей ошибкой:
av_interleaved_write_frame(): Connection reset by peer
Error writing trailer of icecast://source:hackme@localhost:8000/vstream.webm: Connection reset by peer
Использование чего-либо помимо ffmpeg допустимо, я просто хочу, чтобы это работало.
решение1
Оказывается, это либо труднодостижимо, либо вообще невозможно. Тем не менее, можно добиться чего-то похожего с помощью комбинации nginx
(с rtmp
модулем) и ffmpeg
. В nginx
конфигурации (вероятно, расположенной в /etc/nginx/nginx.conf
) необходимо добавить следующий раздел, чтобы он работал как rtmp
сервер (С полным публичным доступом. Будьте осторожны, поток не зашифрован и любой, кто может получить доступ к вашей сети, может его смотреть):
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
allow play all;
}
}
}
Тогда потоковая передача видеофайла так же проста, как вызов ffmpeg
следующего вида:
ffmpeg -re -i video_file.mkv -c:v libx264 -f flv rtmp://host:1935/live
Наконец, любой желающий посмотреть трансляцию должен подключиться к тому же адресу с помощью своего плеера:
rtmp://host:1935/live
Примечание: host
здесь указано имя хоста сервера, на котором nginx
запущен.
решение2
Короткий ответ: вы не можете этого сделать, потому что Icecast — это система потоковой передачи аудио, а не сервер потокового видео.
решение3
С obs все работает отлично, хотя с ffmpeg не пробовал. И у obs есть преимущество в том, что вы получаете элементы управления проигрывателя для поиска вперед и назад. Я следовал этому руководству, и это очень просто:
https://www.braillealphabetsoup.com/icecast-video-streaming-with-obs.html