《FFmpeg Basics》中文版-20-麦克风和摄像头

写在前面

如果您对音视频技术感兴趣,可以订阅我的专题:音视频专辑
也可以关注我的简书账户: 张芳涛,我后期会发布更多的音视频以及图像处理方面的文章。

正文

麦克风和网络摄像头(网络摄像头)是计算机设备的常用部分,而FFmpeg包含了它们的使用元素。

输入设备介绍

FFmpeg可以识别麦克风和网络摄像头等输入设备,这些输入设备被定义为可以从附加的多媒体设备访问数据的元素。 在Windows上,麦克风和网络摄像头可通过dshow输入设备进行访问,如表中所述:

描述 在Windows操作系统上的输入设备,支持的是音频和视频设备
语法 options type=media_type[:type=media_type]
[]中的参数是可选的
类型参数的描述
type 值可以是视频或音频
选项参数的可用值
audio_buffer_size 音频设备缓冲区大小(以毫秒为单位)(可直接影响延迟,取决于设备),默认使用设备的默认缓冲区大小(通常为500ms的倍数)。 将此值设置得过低可能会降低性能
audio_device_number 具有相同名称的设备的音频设备号(从0开始,默认为0)
channels 捕获音频中的通道数
framerate 在拍摄的视频中帧频
list_devices 如果设置为1,则打印设备列表并退出
list_options 如果设置为1,则打印选定设备的选项列表并退出
pixel_format 像素格式的使用,只有在视频编解码器没有设置或设置为rawvideo时才能设置
sample_rate 捕获音频的采样率(在Hz中)
sample_size 捕获音频的样本大小(二进制)
video_device_number 同名设备的视频设备编号(从0开始,默认为0)
video_size 视频大小在捕获的视频

可用的相机和麦克风的列表

便携式电脑有一个内置的摄像头,或者我们可以通过USB接口连接到电脑。麦克风也经常在电脑里制造,或者我们可以把一个放在电脑的麦克风插孔上,通常是粉红色的,耳机的插孔是绿色的。要在Windows上显示所有可用的输入设备,我们使用dshow设备的list_devices选项,比如在命令中:

ffmpeg -list_devices 1 -f dshow -i dummy

输出取决于所使用的计算机,示例输出说明下一个图像:


输出显示有一个名为“HP webcam”的网络摄像头和一个名为“麦克风(Realtek High Defini)”的麦克风。麦克风的全称是“麦克风(Realtek高清)”,但显示的只有31个字符。

  • 因为上面的命令是针对Windows的,所以我的MAC平台下面需要下面的命令:

    ffmpeg -f avfoundation -list_devices true -i ""
    
  • 显示效果如下:

可用选项的摄像头

Webcam通常有几种使用-list_options参数显示的工作模式。要显示来自以前输出的“HP webcam”网络摄像头的选项,我们可以使用以下命令:

ffmpeg -list_options true -f dshow -i video="HP Webcam"

我的测试命令:

ffmpeg -f avfoundation -r 30  -i "1:0"  -t 20 /Users/zhangfangtao/Desktop/test2.mp4 
  • 声明一下,我的facetime没登录,也打不开,所以就录屏了,录了二十秒钟的屏幕

效果图如下:

输出取决于摄像机类型,通常显示可用的分辨率(帧大小)和帧速率:


显示和记录网络摄像机的输入

当我们知道网络摄像头的名称时,我们可以在屏幕上显示它的输入,或者将它记录到文件中。下一个命令显示带有默认设置的webcam输入(通常是最大大小和最大帧速率),第一个是ffplay媒体播放器,第二个是SDL输出设备:

ffplay -f dshow -i video="HP Webcam"
ffmpeg -f dshow -i video="HP Webcam" -f sdl "webcam via ffmpeg"

我的测试命令:

ffplay -f avfoundation  -i "2:0"
  • 录制的副屏的屏幕信息


  • 解释一下,录制的是我的副屏屏幕信息。如果录制主屏幕信息,就是另外一个样子了。。。。:

要将webcam输入记录到文件中,我们可以使用以下命令:

ffmpeg -f dshow -i video="HP Webcam" webcam.avi

我的测试命令:

ffmpeg -f avfoundation -r 30 -i "0:0" -t 30 /Users/zhangfangtao/Desktop/test2.mp4 
  • 结果就是生成了一个30秒钟的视频文件,视频内容就是FaceTime里面的内容。
  • 这里说明一下,我一开始是想生成一个10MB的视频文件,结果都录了二十多分钟了,还没有停下来的意思,我就强制终止了,结果那时候视频已经将近五十兆了。。。。大小设置真的很不准、。。。

Webcams通常有一个默认的媒体格式,比如AVI、MOV等,它们将输入保存在一个与网络摄像头相关的应用程序中。使用这些默认的文件格式有时会导致比使用其他文件格式更好的视频质量。

使用两个摄像头

如果有两个网络摄像头可用,我们可以通过USB端口将它们连接到电脑上,同时用ffmpeg工具显示它们的输出。下一个命令显示网络摄像头的名称,包括麦克风名,控制台输出如下:

ffmpeg -list_devices 1 -f dshow -i dummy

惠普Webcam的选项和如何显示它们的命令在Webcam的可用选项部分中,下面是第二个Webcam命名为Sirius USB2.0相机的选项:

显示输入网络摄像头我们可以使用覆盖过滤器和因为默认视频大小的摄像头是640 x480像素,我们第二个输入的大小设置为320 x240(qvga)-video_size选项,该命令(单引号返回错误,只能使用双引号):

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"

前面的命令将第二个webcam输入定位到左上角,将其放置到右下角,我们将宽度和高度参数添加到叠加过滤器中:叠加=W/2:H/2。

录音并发送到扬声器

与网络摄像头类似,麦克风也有几个工作模式,这些工作模式显示为-list_options参数设置为true或1。对于输入参数使用音频类型而不是视频,在前几节中使用-list_devices选项列出的麦克风的命令是:

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,688评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,559评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,749评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,581评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,741评论 3 271
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,684评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,122评论 2 292
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,847评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,441评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,939评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,333评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,783评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,275评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,830评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,444评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,553评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,618评论 2 249

推荐阅读更多精彩内容

  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 22,834评论 8 183
  • 我辗转千回, 只为梦中见到你。 终是山仞千丈, 我亦雄心万丈。 终是迷雾千重, 我亦乘风破万。 愿我如梦, 似幻似...
    星辰溥天阅读 228评论 0 4
  • 珠江钢琴@潮州 一道 四、高级阶段:如果说钢琴的初级阶段我们侧重于手指技能的训练,学习和掌握各类基本弹奏...
    ZMDPR阅读 321评论 0 0
  • 2016—8—22 莒锅锅 1 我们都知道,不论在体制内还是体制外,即使在同一个单位...
    莒锅锅阅读 387评论 3 4
  • “妈,快看,快看,太可怕了。”女儿目不转睛地盯着电视,朝着厨房里的我大声嚷嚷。“什么节目让你这么激动?”我一边擦着...
    缘末阅读 648评论 47 52