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