Microphone:麦克风 Webcam
麦克风和网络摄像头是电脑的常见设备,FFmpeg 中也可以使用和操作它们。
注:本章仅讲解了 Windows 下摄像头和麦克风的常见用例。
FFmpeg 将麦克风和网络摄像头设别为输入设备,输入设备是一种特殊的组件,可以通过它们来获取实际关联的多媒体设备中的数据。在 Windows 中,麦克风和网络摄像头是通过 dshow 输入设备连接的,其详细描述如下:
笔记本电脑会内置一个摄像头,或者我们连接一个摄像头到电脑,一般将摄像头通过USB插入即可。麦克风一般也会内置到电脑中,或者我们可以连接一个到电脑的话筒插孔,该插孔是粉色的,而绿色的一般是耳机插孔。在 Windows 上使用 DirectShow 可以显示当前可用的所有输入设备,我们使用 dshow 中的 -list_devices 选项,如下:
ffmpeg -list_devices 1 -f dshow -i dummy
它的输出取决于使用的电脑,输入如下所示:
输出显示,有一个可用的摄像头,名为:HP Wabcam,有一个可用的麦克风,名为:Microphone(Realtek High Defini。这是因为麦克风的名称没有显示完全,仅显示了 31 个字符。其全称为:Microphone(Realtek High Definition)。
摄像头一般会有多个工作模式,可以使用 -list_options 参数来显示这些模式。如果我们想要显示上述名为“HP Webcam”的摄像头的工作模式,可以使用如下命令:
ffmpeg -list_options true -f dshow -i video="HP Webcam"
输出依赖于摄像头的类型,通常会显示可用的分辨率(即:帧的大小)以及帧率:
当我们知道了摄像头的名字之后,我们就可以将它的输出显示在屏幕上或者保存到一个文件中。下面的命令会显示摄像头的输入,此时使用摄像头的默认设置(一般是其最大尺寸和最大帧率),第一条命令使用 ffplay 播放,第二条使用 SDL 输出设备播放:
ffplay -f dshow -i video="HP Webcam"
ffmpeg -f dshow -i video="HP Webcam" -f dsl "webcam vai ffmpeg"
想要将摄像头的输入保存到文件,使用命令:
ffmpeg -f dshow -i video="HP Webcam" webcam.avi
摄像头一般会有一个默认的媒体格式,如 AVI,MOV 等。要保存为那种类型和实际的摄像头相关。使用这些默认的格式的视频质量要比其他格式好。
如果我们有两个摄像头,我们可以使用 ffmpeg 工具将它们一起显示出来。下面的命令会显示摄像头以及麦克风的名称,其输出如下:
ffmpeg -list_devices 1 -f dshow -i dummy
我们继续查看 Sirius USB2.0 Camera 的可用选项:
ffmpeg -list_options true -f dshow -i video="Sirius USB2.0 Camera"
如果想要显示两个摄像头的输出,那么我们需要使用 overlay filter来将一个输入覆盖在另一个上面。由于两个摄像头的默认尺寸都是 640 x 480 ,因此我们需要通过 -video_size 设置第二个输入为 320 x 240(qvga) ,命令如下(单引号会报错,双引号成功):
ffmpeg -f dshow -i "video=Sirius USB2.0 Camera" -f dshow -video_size qvga -i “video=HP Webcam" -filter_complex overlay -f sdl "2 webcams"
上面的命令将第二个摄像头的内容放在了第一个摄像头内容的左上角,如果我们想要将其放在右下角,那么我们需要在 overlay 中加入参数:overlay=W/2:H/2。
和摄像头类似,扬声器也有多个工作模式,可以通过 -list_options 参数设置为 true 或者 1 来显示。此时要将输入参数从 video 修改为 audio ,例如为之前扬声器查看工作模式的命令如下:
ffmpeg -list_options 1 -f dshow -i "audio=Microphone (Realtek High Defini"
要将麦克风的声音输入到扬声器,命令如下:
ffplay -f dshow -i audio="Microphone (Realtek High Defini"
将声音保存到文件,命令如下:
ffmpeg -f dshow -i audio="Microphone (Realtek High Defini" -t 60 mic.mp3
想要同时将视频和音频保存到文件,可以使用以下命令:
ffmpeg -f dshow -i audio="Microphone (Realtek High Defini":video="HP Webcam" webcam_with_sound.avi