4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FFmpegAdvent Calendar 2021

Day 9

ffmpeg でUSBカメラの映像を録画しつつ ffplay でモニターする

Posted at

USBカメラのリストを出す

以下のコマンドで、デバイス名が "USB2.0 UVC PC Camera" であることがわかる。

> ffmpeg -hide_banner -list_devices true -f dshow -i nul
[dshow @ 000001c74c0f9180] DirectShow video devices (some may be both video and audio devices)
[dshow @ 000001c74c0f9180]  "USB2.0 UVC PC Camera"
[dshow @ 000001c74c0f9180]     Alternative name "@device_pnp_\\?\usb#vid_a16f&pid_0304&mi_00#7&37e7878e&2&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"
[dshow @ 000001c74c0f9180] DirectShow audio devices
[dshow @ 000001c74c0f9180] Could not enumerate audio only devices (or none found).
nul: Immediate exit requested

出力フォーマットのリストを出す

対応した pixel_format=yuyv422、サイズが 640x480 であることがわかる。

>ffmpeg -hide_banner -list_options true -f dshow -i video="USB2.0 UVC PC Camera"
[dshow @ 000002615cb890c0] DirectShow video device options (from video devices)
[dshow @ 000002615cb890c0]  Pin "繧ュ繝」繝励メ繝」" (alternative pin name "0")
[dshow @ 000002615cb890c0]   pixel_format=yuyv422  min s=640x480 fps=25 max s=640x480 fps=25
[dshow @ 000002615cb890c0]   pixel_format=yuyv422  min s=640x480 fps=25 max s=640x480 fps=25
[dshow @ 000002615cb890c0]   pixel_format=yuyv422  min s=160x120 fps=25 max s=160x120 fps=25
[dshow @ 000002615cb890c0]   pixel_format=yuyv422  min s=160x120 fps=25 max s=160x120 fps=25
[dshow @ 000002615cb890c0]   pixel_format=yuyv422  min s=176x144 fps=25 max s=176x144 fps=25
[dshow @ 000002615cb890c0]   pixel_format=yuyv422  min s=176x144 fps=25 max s=176x144 fps=25
[dshow @ 000002615cb890c0]   pixel_format=yuyv422  min s=320x240 fps=25 max s=320x240 fps=25
[dshow @ 000002615cb890c0]   pixel_format=yuyv422  min s=320x240 fps=25 max s=320x240 fps=25
[dshow @ 000002615cb890c0]   pixel_format=yuyv422  min s=352x288 fps=25 max s=352x288 fps=25
[dshow @ 000002615cb890c0]   pixel_format=yuyv422  min s=352x288 fps=25 max s=352x288 fps=25
[dshow @ 000002615cb890c0]   pixel_format=yuyv422  min s=640x480 fps=25 max s=640x480 fps=25
[dshow @ 000002615cb890c0]   pixel_format=yuyv422  min s=640x480 fps=25 max s=640x480 fps=25
video=USB2.0 UVC PC Camera: Immediate exit requested

ffplay で表示する

表示するだけなら特に意識しなくてもいい。
出力フォーマットは、上で取得したリストの一番上のものが選ばれる?

ffplay -f dshow -i video="USB2.0 UVC PC Camera"

ffmpeg で録画する

ffmpeg の出力先を動画ファイルにするだけ。

ffmpeg -f dshow -i video="USB2.0 UVC PC Camera" video.mp4

ffmpeg でUSBカメラの映像を録画しつつ ffplay でモニターする

-filter_complexsplit フィルターを使う。
ffmpeg から rawvideo フォーマットでパイプに出力し、ffplay でパイプを入力とする。
-f rawvideo は生データなので、ffplay には -f rawvideo に加えてビデオサイズ -video_size とフォーマット -pixel_format を教えないといけない。リアルタイムに表示しているだけなので -framerate は不要。

ffmpeg -hide_banner -y -f dshow -i video="USB2.0 UVC PC Camera" -filter_complex split[v1][v2] -map [v1] video.mp4 -map [v2] -f rawvideo - | ffplay -hide_banner -f rawvideo -video_size 640x480 -pixel_format yuyv422 -
4
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?