お知らせ
現在サイトのリニューアル作業中のため、表示が崩れているページが存在することがあります。
Windows 10でffmpegを使ってWebCamの内容をRTPで送受信する事について調べたので、そのログ
送信するフォーマットはH.264, G.711
ffmpeg4.1を使用
- ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url}- 
- -iの前にあるものがglobal_options- 
- input_file_optionsも -iの手前にある
 
- -iで入力を指定- 
- ファイルパスやURL、デバイスIDなどを指定できる
- https://www.ffmpeg.org/ffmpeg.html#Main-options
 
- input_urlの後ろにあるものが出力
- 但し解釈不能なコマンドはすべて出力として扱われる
- https://ffmpeg.org/ffmpeg-all.html#Description
 
 
動作確認はしてないので注意
- 送信側
- ffmpeg -re -f dshow -i video="Hoge_Camera":audio="Hoge_MIC" -r 30 -c:v libx264 -an -f rtp rtp://224.0.0.255:1234 -c:a pcm_mulaw -vn -f rtp rtp://224.0.0.255:1235 -sdp_file stream.sdp
 
- 受信側
- ffplay -protocol_whitelist "file,udp,rtp" stream.sdp- 
- ffplayをffmpegに変えてI/O出来るようにしてやるとファイルに落としたり再送したりできる
 
 
- -re- 
- 本来のフレームレートで読み込む。指定しない場合は早送りになる?
- ストリーミングを流したりするときに利用する、エンコードで使うと遅くなりそう
- https://ffmpeg.org/ffmpeg.html#Advanced-options
 
- -y- 
- 出力ファイルの上書きを確認しない
- https://www.ffmpeg.org/ffmpeg.html#Main-options
 
- -f- 
- I/Oフォーマットの指定
- ffmpegは自動でフォーマットを検出する機能を持つが、それを無視する場合に使用する
- https://ffmpeg.org/ffmpeg.html#Main-options
- dshow
- DirectShowデバイスを指定
- https://www.ffmpeg.org/ffmpeg-devices.html#dshow
- https://trac.ffmpeg.org/wiki/DirectShow
- DirectShowデバイスの一覧
- ffmpeg -list_devices true -f dshow -i dummy- 
- https://www.ffmpeg.org/ffmpeg-devices.html#Examples-2
 
 
- 入力デバイスの指定
- TYPE=NAME[:TYPE=NAME]
- http://ffmpeg.org/ffmpeg-devices.html#dshow
 
 
- rtp
 
- -formats- 
- -fオプションで指定できるフォーマットの一覧を表示
- https://www.ffmpeg.org/ffmpeg.html#Generic-options
 
- -r- 
- フレームレートの設定
- https://www.ffmpeg.org/ffmpeg.html#Video-Options
 
- -c[:stream_specifier]- 
- ストリームに対してコーデックを指定する
- 例外的に -c copyはコーデックコピーとなる
- https://www.ffmpeg.org/ffmpeg.html#Main-options
- -c:vで動画の- -c:aで音声のコーデックを指定できる
 
- stream_specifier
- 各種オプションで利用するストリーム識別子
- 雑に書くと vが映像、aが音声
- http://ffmpeg.org/ffmpeg.html#Stream-specifiers-1
 
- -decoders- 
- 利用可能なデコーダーの一覧
- https://www.ffmpeg.org/ffmpeg.html#Generic-options
 
- -an- 
- 音声ストリームをブロックする
- https://www.ffmpeg.org/ffmpeg.html#Audio-Options
- 動画ストリームを切り出すのに利用
 
- -vn- 
- 動画ストリームをブロックする
- https://www.ffmpeg.org/ffmpeg.html#Video-Options
- 音声ストリームを切り出すのに利用
 
- -sdp_file- 
- SDPファイルを出力する
- https://www.ffmpeg.org/ffmpeg.html#Advanced-options
- -yオプションの有無に関わらず上書きされる
 
- -protocol_whitelist "tcp, udp, ..."- 
- カンマ区切りでプロトコルを指定することで、プロトコルを利用できるようになる
- https://ffmpeg.org/ffmpeg-protocols.html#Protocol-Options
- SDPファイルを用いてRTPストリームを受ける場合には "file,udp,rtp"を指定する
- file
- ローカルファイルへのアクセスプロトコル
- https://ffmpeg.org/ffmpeg-protocols.html#file
 
- udp
- UDP
- https://ffmpeg.org/ffmpeg-protocols.html#udp
 
- rtp
- RTP
- https://ffmpeg.org/ffmpeg-protocols.html#rtp
 
- なんでfileがいるのかは正直良くわかってない