FFmpeg - social-robotics-lab/robo-tutorial GitHub Wiki
Windowsで使用できるデバイスを表示する
ffmpeg -list_devices true -f dshow -i dummy
Windows上でカメラの映像を表示する
ffplay -f dshow -i video="Surface Camera Front"
Windows上のカメラの映像をrtpでストリーミングする。(実行開始した時点からの映像が送られるため遅延がでる。)
ffmpeg -re -f dshow -i video="Surface Camera Front" -r 30 -c:v libx264 -an -f rtp rtp://localhost:5001 -sdp_file stream.sdp
ffplay -protocol_whitelist "file,udp,rtp" stream.sdp
インプットデバイスがdshowかvideo4linux2かで使えるオプションが異なる。 オプションの詳細は公式サイトで確認。
Edison上のカメラデバイスが扱えるフォーマットの確認
ffmpeg -f video4linux2 -list_formats all -i /dev/video0
UDPで送信?
ffmpeg -s 320x240 -f video4linux2 -i /dev/video0 -f mpeg1video -b 800k -r 30 udp://127.0.0.1:8082
RSTPでストリーミングをするためには、ストリーミングサーバを立てる必要がある。それには、nginxで構築する。
Sota:192.168.11.22, PC:192.168.11.4
UDPで送信
ffmpeg -f v4l2 -s 320x240 -thread_queue_size 8192 -i /dev/video0 -c:v libx264 -preset ultrafast -tune zerolatency -f h264 udp://192.168.11.4:5001?pkt_size=1024
Windowsの場合
ffmpeg -re -f dshow -i video="Surface Camera Front" -s 320x240 -r 30 -c:v libx264 -preset ultrafast -tune zerolatency -an -f h264 udp://localhost:5000?pkt_size=1024
UDPで受信
ffplay -fflags nobuffer udp://192.168.11.4:5001
TCPだと、サーバを起動してから、クライアントを起動するまでの時間差によって、映像の再生にずれ生じる。
Windowsでマイクの入力を録音する
ffmpeg -f dshow -i audio="マイク配列 (Realtek High Definition Audio(SST))" out.mp3
Windowsでマイク入力をUDPで自分自身に送信し、それを受信してwavにする
ffmpeg -f dshow -ac 1 -thread_queue_size 8192 -i audio="マイク配列 (Realtek High Definition Audio(SST))" -f s16le -c:a pcm_s16le -ar 16000 udp://127.0.0.1:5001?pkt_size=1024
ffmpeg -fflags nobuffer -f s16le -c:a pcm_s16le -ar 16000 -i udp://127.0.0.1:5001 output.wav