2020年4月26日日曜日

FFmpeg Webカメラからの録画とRTMP配信

FFmpegについてはWindowsで使用しています。

FFmpegのインストールについては、以下の記事を参考にしてください。
早送りのスムーズな動画を作りたい(ffmpeg)

vfwcapとdshowのどちらでもキャプチャ可能ですが、vfwcapは古い形式だそうです。

1.vfwcap

使用するカメラを選択します

ffmpeg -y -f vfwcap -i list


ドライバー0を使用する場合、「-i」パラメータに「0」を指定します。
ffmpeg -f vfwcap -i 0 output.avi

2.dshow

使用するカメラを選択します
ffmpeg -list_devices true -f dshow -i dummy



デバイス名に日本語が含まれると、下の図のように文字化けする場合があります。
その場合はコマンドプロンプトで以下を先に実行して文字コードをUTF-8にします。
chcp 65001


実施後はShift-Jisに戻しておいたほうがいいかな
chcp 932

上記の例のデバイスで録画する場合以下のようになります。
videoとaudioは自身の設定に変更が必要です。
録画を停止するには「Q」キーを押下します。

ffmpeg -f dshow -i video="BUFFALO BSW20KM15 USB Camera":audio="デスクトップ マイク (BUFFALO BSW20KM15 USB Camera)" sample.avi


3.カメラの映像をRTMP配信

上記の例のデバイスで録画する場合以下のようになります。
videoとaudioは自身の設定に変更が必要です。
録画を停止するには「Q」キーを押下します。

ffmpeg -f dshow -i video="BUFFALO BSW20KM15 USB Camera":audio="デスクトップ マイク (BUFFALO BSW20KM15 USB Camera)" -f flv rtmp://送付先アドレス

実際には画質などの設定をすべきですが、最低限はこんな感じで動くと思います。