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