怎么用python来探查当前的播音设备,并把这个参数传给ffmpeg来录屏和录系统发出的s...
怎么用python来探查当前的播音设备,并把这个参数传给ffmpeg来录屏和录系统发出的声音呢?我用python调用ffmpeg来录视频,怎么声音录得是麦克风的输入! 问AI 解决方案:使用Python+FFmpeg录制系统声音(非麦克风)
关键思路:通过FFmpeg的dshow获取Windows系统声音设备名,再传递给Python脚本
[*]1. 查看系统声音设备名称
在cmd运行:
ffmpeg -list_devices true -f dshow -i dummy
在输出中找到类似这样的系统声音设备(不同电脑名称不同):
「DirectShow audio devices」
「虚拟音频采集器」
[*]2. Python获取设备名示例代码
import subprocess
import re
# 获取所有音频设备
cmd = 'ffmpeg -list_devices true -f dshow -i dummy'
result = subprocess.run(cmd, capture_output=True, text=True, encoding='gbk')
# 提取音频设备(注意中文系统用gbk解码)
audio_devices = re.findall(r'\"(.*?)\" \(audio\)', result.stderr)
print("找到的音频设备:", audio_devices)
# 假设选择第一个设备(根据实际情况修改索引)
system_audio = audio_devices
[*]3. 最终录制命令模板
ffmpeg -f gdigrab -i desktop -f dshow -i audio="设备名称" output.mp4
[*]4. Python完整调用示例
import subprocess
device_name = "虚拟音频采集器"# 替换为实际设备名
cmd = [
'ffmpeg',
'-f', 'gdigrab', '-i', 'desktop',
'-f', 'dshow', '-i', f'audio={device_name}',
'-vcodec', 'libx264',
'-crf', '23',
'-preset', 'ultrafast',
'output.mp4'
]
subprocess.run(cmd)
常见问题:
1. 若没有系统声音设备,需安装虚拟声卡(如VB-Cable)或启用"立体声混音"
2. macOS/Linux需改用其他采集方式(avfoundation/pulse)
3. 确保ffmpeg.exe在系统PATH环境变量中
参考链接:
https://ffmpeg.org/ffmpeg-devices.html#dshow
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]