ffmpegを使用してIcecastにビデオをストリーミングしますか?

ffmpegを使用してIcecastにビデオをストリーミングしますか?

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組み合わせると、同様の効果が得られますffmpegnginx設定(おそらく場所)でサーバーとして機能する/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

関連情報