blackantt 发表于 7 天前

怎么用python来探查当前的播音设备,并把这个参数传给ffmpeg来录屏和录系统发出的s...

怎么用python来探查当前的播音设备,并把这个参数传给ffmpeg来录屏和录系统发出的声音呢?

我用python调用ffmpeg来录视频,怎么声音录得是麦克风的输入!

西西咕 发表于 7 天前

问AI

FishC 发表于 前天 20:45

解决方案:使用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]
查看完整版本: 怎么用python来探查当前的播音设备,并把这个参数传给ffmpeg来录屏和录系统发出的s...