在 Windows 系统中 , 使用 ffmpeg 命令 录制 音视频 , 需要先获取 系统的 音视频设备 信息 , 录制 音视频 本质上是从 系统音视频设备 中获取数据 ;
执行
ffmpeg -list_devices true -f dshow -i dummy
命令 , 可以获取 系统中 ffmpeg 可用的 DirectShow 音视频输入设备 ;
命令参数解析 :
-list_devices true
: 列出所有 ffmpeg 的 指定类型的可用设备 ;-f dshow
: 设置 输入设备 类型为 dshow , 这是 DirectShow 的简称 , DirectShow 是 Windows 的 音视频设备管理 框架 ;-i dummy
: -i 表示 ffmpeg 输入文件或设备 , dummy 指的是虚拟的输入设备 , 该参数的作用是 指定 ffmpeg 可用的 dshow 虚拟输入设备。执行结果如下 :
[dshow @ 000001e0034ade00] DirectShow video devices (some may be both video and audio devices)
[dshow @ 000001e0034ade00] Could not enumerate video devices (or none found).
[dshow @ 000001e0034ade00] DirectShow audio devices
[dshow @ 000001e0034ade00] "立体声混音 (Realtek(R) Audio)"
[dshow @ 000001e0034ade00] Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{348B8A31-CF2E-42D5-A6B2-862A966A1ED0}"
dummy: Immediate exit requested
上述命令输出结果中 ,
执行
ffmpeg -f gdigrab -framerate 30 -offset_x 0 -offset_y 0 -video_size 1920x1080 -i desktop -c:v libx264 -preset ultrafast output.mp4
命令 , 可以在 Windows 中 , 捕获视频数据 ,
上述命令参数解析 :
-f gdigrab
: 设置 录制视频 的 输入格式为 gdigrab , Windows 上使用该方式捕获视频 , Linux 中设置的是 -f x11grab
参数 ;-framerate 30
: 设置 录制屏幕 的 帧率 为 30 FPS ;-offset_x 0 -offset_y 0
: 设置 录制区域的偏移量 , 也就是 视频的左上角 所在的 屏幕中的位置 , 这里设置为屏幕的左上角 , 配合下面的 1920x1080 也就是全屏录制 ;-video_size 1920x1080
: 设置 录制视频尺寸为 1920x1080 , 这也是屏幕的分辨率 ;-i desktop
: 设置录制视频的 输入设备或文件 为系统桌面 ;-c:v libx264
: 设置 视频编码器 为 libx264 ;-preset ultrafast
: 设置编码速度为 ultrafast ;执行过程中 , 最后一行实时动态更新当前的 帧数 , fps , 大小 等参数 ;
执行结果如下 , 输出的 output.mp4 文件属性如下 :
执行
ffmpeg -f dshow -i audio="立体声混音 (Realtek(R) Audio)" -c:a aac output.aac
命令 , 执行过程中 会停在一行中 , 实时显示视频录制的信息 ,
参数解析 :
-f dshow
: 指定输入设备类型为 dshow , 即 DirectShow 设备 , 在 Linux 中设置 -f x11grab
参数 ;-i audio="立体声混音 (Realtek(R) Audio)"
: 设置 音频输入设备为 系统声音 ;-c:a aac
: 设置 音频编解码器 为 AAC 格式 ;按下 Ctrl + C 组合键后 , 就会终止音频录制 ;
执行
ffmpeg -f gdigrab -framerate 30 -offset_x 0 -offset_y 0 -video_size 1920x1080 -i desktop -f dshow -i audio="立体声混音 (Realtek(R) Audio)" -c:v libx264 -c:a aac -preset ultrafast -strict experimental output.mp4
命令 , 可以同时录制 视频 和 音频 到 输出文件中 , 录制视频的命令 与 上面的命令参数相同 , 只是在上述录制视频的基础上 , 增加了 -f dshow -i audio="立体声混音 (Realtek(R) Audio)"
选项 ,
这个音频的设备 是通过 执行
ffmpeg -list_devices true -f dshow -i dummy
命令 获得的 ;
执行过程中 , 在最后一行显示实时录制信息 ;
按下 Ctrl + C 键 停止录制 , 录制后的视频可以正常播放 ;