Gibt es eine einfache Möglichkeit, Videos mit ffmpeg in icesast zu streamen? Das Quellvideo liegt im video/x-matroska
Format vor. Die Streams selbst liegen in verschiedenen Formaten vor (mpeg, vorbis, aac usw.). Ich möchte, dass ffmpeg die Quelle selbst errät und sie dann „on the fly“ in alles umwandelt, was von Browsern abgespielt werden kann, wobei die Quellauflösung und das Seitenverhältnis beibehalten werden. Das video/webm
wird reichen. Ich habe Folgendes versucht (einschließlich des Spielens mit Ausgabeformaten):
ffmpeg -i source.mkv -vcodec libvpx -cpu-used -5 -deadline realtime -content_type video/webm\
icecast://source:hackme@localhost:8000/vstream.webm
Der Stream ist jedoch nicht abspielbar und die Verbindungen führen dazu, dass ffmpeg mit folgendem Fehler beendet wird:
av_interleaved_write_frame(): Connection reset by peer
Error writing trailer of icecast://source:hackme@localhost:8000/vstream.webm: Connection reset by peer
Es ist kein Problem, alles andere als ffmpeg einzubinden, ich möchte nur, dass es funktioniert.
Antwort1
Es stellt sich heraus, dass dies entweder schwer zu erreichen ist oder überhaupt nicht möglich ist. Dennoch ist es möglich, etwas Ähnliches mit einer Kombination aus nginx
(mit rtmp
Modul) und zu erreichen ffmpeg
. In nginx
der Konfiguration (wahrscheinlich unter /etc/nginx/nginx.conf
) sollte der folgende Abschnitt angehängt werden, damit es als rtmp
Server funktioniert (Mit vollem öffentlichem Zugriff. Seien Sie vorsichtig, der Stream ist nicht verschlüsselt und jeder, der Ihr Netzwerk erreichen kann, kann ihn ansehen):
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
allow play all;
}
}
}
Das Streamen von Videodateien geht dann ganz einfach über den ffmpeg
folgenden Aufruf:
ffmpeg -re -i video_file.mkv -c:v libx264 -f flv rtmp://host:1935/live
Wer den Stream ansehen möchte, muss sich abschließend mit seinem bevorzugten Player mit derselben Adresse verbinden:
rtmp://host:1935/live
Hinweis: host
Hier ist der Hostname des Servers, auf dem nginx
es gestartet wird.
Antwort2
Kurze Antwort: Das ist nicht möglich, da Icecast ein Audio-Streaming-System und kein Video-Streaming-Server ist.
Antwort3
Mit obs funktioniert es einwandfrei, mit ffmpeg habe ich es allerdings noch nicht probiert. Und obs hat den Vorteil, dass man mit den Player-Steuerelementen hin- und herspringen kann. Ich bin dieser Anleitung gefolgt und es ist ganz einfach:
https://www.braillealphabetsoup.com/icecast-video-streaming-with-obs.html