赞
踩
在上一篇博客 【FFmpeg】音视频录制 ② ( 使用 Screen Capturer Recorder 软件生成 ffmpeg 可录制的音视频设备 ) 中 , 安装了 Screen Capturer Recorder 软件 , 在 Windows 系统中生成了
两个虚拟 音视频 设备 , ffmpeg 可以通过录制 这两个设备 以达到 录制 桌面 和 系统声音 的目的 ;
执行
ffmpeg -list_devices true -f dshow -i dummy
命令 , 可以查看当前系统中的音视频设备 ;
libpostproc 55. 9.100 / 55. 9.100
[dshow @ 0000023e8d3becc0] DirectShow video devices (some may be both video and audio devices)
[dshow @ 0000023e8d3becc0] "screen-capture-recorder"
[dshow @ 0000023e8d3becc0] Alternative name "@device_sw_{860BB310-5D01-11D0-BD3B-00A0C911CE86}\{4EA69364-2C8A-4AE6-A561-56E4B5044439}"
[dshow @ 0000023e8d3becc0] DirectShow audio devices
[dshow @ 0000023e8d3becc0] "virtual-audio-capturer"
[dshow @ 0000023e8d3becc0] Alternative name "@device_sw_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\{8E146464-DB61-4309-AFA1-3578E927E935}"
在家里的电脑中 , 只有 Screen Capturer Recorder 软件 , 生成的虚拟音视频设备 ,
没有默认的 立体声混音 设备 , 公司电脑中 曾经安装了 Cubase 等音乐软件 , 可能是这类音乐软件自动生成的 虚拟设备 ;
一般的电脑只会显示上述两个音频设备 ;
执行
ffmpeg -f dshow -i video="screen-capture-recorder" output.mp4
命令 , 可以录制 screen-capture-recorder 虚拟设备中的数据 , 这个设备就是 桌面的主屏幕 的视频画面数据 ;
-f dshow
: 该参数这指定了 ffmpeg 命令 使用的输入格式为 DirectShow , 这是 Windows 系统中用于视频捕获和音频捕获的框架 ;
-i video="screen-capture-recorder"
: 该参数用于 指定 screen-capture-recorder 设备为 输入设备 , 这是一个虚拟视频设备 , 可能是由特定的屏幕录制软件创建的 ;
录制过程中 , 底部会显示 录制的 帧率 , 帧数 , 大小 , 码率 等参数 ;
录制时 , 按下回车 , 在按下 Ctrl + C 组合键 , 即可停止录制 ;
使用 ffplay 命令 , 可正常播放该视频 , 使用 MediaInfo 查看该视频的数据 ;
执行
ffmpeg -f dshow -i audio="virtual-audio-capturer" output.aac
命令 , 录制 virtual-audio-capturer 虚拟音频设备的数据 , 这个虚拟音频就是 系统声音 ;
上述参数 与 录制视频 的参数配置相同 , 只有录制设备由 screen-capture-recorder 虚拟视频设备 改为 virtual-audio-capturer 虚拟音频设备 ;
录制的过程中 , 会在 命令行底部 实时显示 录制音频的 大小 , 时间 , 帧率 , 速度 等参数 ;
先按回车 , 再按 Ctrl + C 组合键 , 就可以停止音频录制 ;
在本示例中 , 没有安装麦克风 , 因此也没有麦克风设备 , 假如有 麦克风 设备的话 , 我们 同时录制 系统声音 + 麦克风 声音 , 需要使用如下命令 ;
执行
ffmpeg -f dshow -i audio="麦克风 (Realtek Audio)" -f dshow -i audio="virtual-audio-capturer" -filter_complex amix=inputs=2:duration=first:dropout_transition=2 output.aac
命令 , 可以同时录制 麦克风 + 系统音频 声音 ;
-f dshow
参数 指定了 在 Windows 中使用 DirectShow 框架管理的 音视频设备 作为输入设备 ;
-f dshow -i audio="麦克风 (Realtek Audio)"
参数 设置的是 麦克风 虚拟设备 音频输入 ;
-f dshow -i audio="virtual-audio-capturer"
参数 设置的是 系统虚拟音频设备输入 ;
-filter_complex
参数用于创建复杂的滤镜链来处理音视频流 ;
-filter_complex amix=inputs=2:duration=first:dropout_transition=2
参数 是 混音选项 ,
amix
参数 指定该设置是一个滤镜 , 用于混合音频和视频流 ;inputs=2
参数 指定了要混合的输入流的数量 为 2 个 ;duration=first
参数 指定 输入的时长 等于 第一个输入的时长 , 也就是 麦克风设备 的输入时长 ;dropout_transition=2
参数 设置 在混合过程中出现的一个输入流早于另一个结束的情况 , 指定了一个 秒 时间段 , 在这个时间段内 如果一个输入流结束了而另一个还在继续 , 则逐渐降低仍在播放的流的音量 , 直到完全静音 , 目的是使音频过渡更加平滑 ; 这里设置是 2 秒时间内逐渐静音 ;执行
ffmpeg -f dshow -i audio="virtual-audio-capturer" -f dshow -i video="screen-capture-recorder" output.mp4
命令 , 可以同时录制 系统音频 + 桌面视频 , 输出到 output.mp4 输出文件中 ;
-f dshow -i audio="virtual-audio-capturer"
参数 设置了 桌面视频画面 为 输入设备 ;
-f dshow -i video="screen-capture-recorder"
参数 设置了 系统声音 为 输入设备 ;
录制过程中 , 会实时显示录制的实时参数信息 ;
先在命令行 输入 回车 , 再按下 Ctrl + C 键 , 可以停止录制 , 查看视频信息如下 , 该视频可正常播放 ;
执行
ffmpeg -f dshow -i audio="麦克风 (Realtek Audio)" -f dshow -i audio="virtual-audio-capturer" -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f dshow -i video="screen-capture-recorder" output.mp4
命令 , 可以同时录制 系统音频 + 麦克风音频 + 桌面视频 数据 ;
上述命令分为 2 部分 ,
-f dshow -i audio="麦克风 (Realtek Audio)" -f dshow -i audio="virtual-audio-capturer" -filter_complex amix=inputs=2:duration=first:dropout_transition=2
部分 设置的事 麦克风 + 音频 录制参数 和 两路音频的混音参数 ;f dshow -i video="screen-capture-recorder"
部分 设置 录制视频画面 参数 ;Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。