FFmpeg | 录制摄像头和桌面数据windows
概述
FFmpeg Windows 设备操作 Windows 采集设备的主要方式是 dshow vfwcap gdigrab 其中
- dshow 可以用来抓 取摄像头、采集卡、麦克风等,- vfwcap 主要用来采集摄像头类设备,- gdigrab 则是抓取 Windows 窗口程序
FFmpeg 使用 dshow 采集音视频设备
使用 dshow 枚举设备
ffmpeg -f dshow -list_devices true -i dymmy
输出
[dshow @ 000002622302e340] DirectShow video devices (some may be both video and audio devices)
[dshow @ 000002622302e340] "Altair USB2.0 Camera"
[dshow @ 000002622302e340] Alternative name "@device_pnp_\\?\usb#vid_0ac8&pid_3450&mi_00#6&3b01315a&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global"
[dshow @ 000002622302e340] DirectShow audio devices
``
使用 dshow 展示摄像头, 摄像头的参数为 video=“摄像头名称”
ffplay -f dshow -i video="Altair USB2.0 Camera"
``
获得摄像头支持的分辨率
ffmpeg -list_options true -f dshow -i video="Altair USB2.0 Camera"
输出
[dshow @ 000001b88b90e380] DirectShow video device options (from video devices)
[dshow @ 000001b88b90e380] Pin "捕获" (alternative pin name "0")
[dshow @ 000001b88b90e380] pixel_format=yuyv422 min s=640x480 fps=15 max s=640x480 fps=30
[dshow @ 000001b88b90e380] pixel_format=yuyv422 min s=640x480 fps=15 max s=640x480 fps=30
[dshow @ 000001b88b90e380] pixel_format=yuyv422 min s=352x288 fps=15 max s=352x288 fps=30
[dshow @ 000001b88b90e380] pixel_format=yuyv422 min s=352x288 fps=15 max s=352x288 fps=30
[dshow @ 000001b88b90e380] pixel_format=yuyv422 min s=320x240 fps=30 max s=320x240 fps=60.0002
[dshow @ 000001b88b90e380] pixel_format=yuyv422 min s=320x240 fps=30 max s=320x240 fps=60.0002
[dshow @ 000001b88b90e380] pixel_format=yuyv422 min s=176x144 fps=30 max s=176x144 fps=60.0002
[dshow @ 000001b88b90e380] pixel_format=yuyv422 min s=176x144 fps=30 max s=176x144 fps=60.0002
[dshow @ 000001b88b90e380] pixel_format=yuyv422 min s=160x120 fps=30 max s=160x120 fps=60.0002
[dshow @ 000001b88b90e380] pixel_format=yuyv422 min s=160x120 fps=30 max s=160x120 fps=60.0002
可以加上分辨率的参数 -video_size
ffplay -f dshow -video_size 640x480 -i video="Altair USB2.0 Camera"
FFmpeg 使用 vfwcap 采集视频设备
vfwcap 主要支持两个参数 video_size framerate ,分别指示采集图像的大小和帧率
使用 vfwcap 枚举支持采集的设备
ffmpeg -f vfwcap -i list
输出
[vfwcap @ 0000025a6d60d080] Driver 0
[vfwcap @ 0000025a6d60d080] Microsoft WDM Image Capture (Win32)
[vfwcap @ 0000025a6d60d080] Version: 10.0.17134.1
list: I/O error
使用 vfwcap 生成 MP4 文件
ffmpeg -f vfwcap -i 0 -r 25 -vcodec libx264 out.mp4
我们通过 -i 指定了待录像的摄像头 索引号,-r 则指定了 需要录像 的帧, -vcodec 指定了录像视频的编码格式,输出 out.mp4
FFmpeg 使用 gdigrab 采集窗口
Windows 平台, FFmpeg 支持采集基于 gdi 的屏幕采集设备,这个设备同时支持采 集显示器的某 块区域, gdigrab 支持的主要参数如表 7-5 所示
gdigrab 的输入主要有两种方式:
- desktop title = window_title ,其中 desktop 代表采 集整个桌面,1. ttitle = window title 则是采集标题为 window title 的窗口 使用 gdigrab 采集整个桌面
ffmpeg -f gdigrab -framerate 6 -i desktop screen.mp4
使用gdigrab采集某个窗口
ffmpeg -f gdigrab -framerate 6 -i title="TTR-TEST: ~/DetectAV/src/LiveDetect - Xshell 6" gdi.mp4
该窗口是我用spy++抓的
--完--
- 原文作者: 留白
- 原文链接: https://zfunnily.github.io/2020/09/ffmpegvideow/
- 更新时间:2024-04-16 01:01:05
- 本文声明:转载请标记原文作者及链接