使用Windows的ffmpeg录制音频输出而不使用StereoMix

3
我正在寻找一种在Windows上使用ffmpeg记录音频输出(扬声器)的方法。我需要在不安装任何额外的dshow过滤器和未启用StereoMix输入的情况下进行操作(因为许多计算机都没有这个选项)。
我在ffmpeg文档中阅读到,-map可以重定向音频输出,以便ffmpeg将其视为音频输入,但我找不到如何执行此操作的示例。
在Linux中,我成功地按照以下方式实现了此操作:
ffmpeg -f pulse -ac 2 -ar 44100 -i alsa_output.pci-0000_00_1f.4.analog-stereo.monitor -f pulse -ac 2 -ar 44100 -i alsa_input.pci-0000_00_1f.4.analog-stereo -filter_complex amix=inputs=2 test.mp4

然而我无法在Windows和MacOSX中找到类似的方法。

简单来说,使用Windows ffmpeg录制扬声器音频是否可能不需要额外的dshow过滤器(开箱即用)?同样的问题也适用于MacOSX。

谢谢!


1
目前没有原生输入设备,因此您可以编写并提交一个或安装dshow过滤器(虚拟音频捕获器)。在OS X上,我认为您也需要安装一些东西(Soundflower?)。 - rogerdpack
rogerdpack,感谢您的建议,我已经了解到Mac上的Soundflower,只是不知道virtual-audio-capturer。非常感谢您提供的信息! - DevtelSoftware
1个回答

0
C:\DIR>choco install ffmpeg

C:\DIR>ffmpeg -list_devices true -f dshow -i dummy
[...]
[dshow @ 00000000005d1140] DirectShow audio devices
[dshow @ 00000000005d1140]  "Microphone Array (Realtek High "
[dshow @ 00000000005d1140]     Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\Microphone Array (Realtek High "
[...]

C:\DIR>ffmpeg -f dshow -i audio="Microphone Array (Realtek High " NAME.wav
[...]
[press 'q' to quit]
[...]

为了播放文件,我发现需要在Windows SDL输出设备配置中应用一个解决bug的方法。

https://trac.ffmpeg.org/ticket/6891

C:\DIR>@rem https://trac.ffmpeg.org/ticket/6891
C:\DIR>@rem set SDL_AUDIODRIVER=directsound or winmm
C:\DIR>set SDL_AUDIODRIVER=winmm
C:\DIR>ffplay -i NAME.wav

观看ffplay的实时频谱图很有趣。

C:\DIR>ffplay -f dshow -i audio="Microphone Array (Realtek High "
[...]
[press 'm' to mute the echo]
[...]
[press 'q' to quit]
[...]

我看到了使用Python或其媒体播放器从Windows API播放音频文件的其他方法。

C:\DIR>type winsound-play.py
import sys, winsound

winsound.PlaySound(sys.argv[1], winsound.SND_FILENAME)

C:\DIR>c:\Python27\python winsound-play.py NAME.wav

C:\DIR>explorer NAME.wav

C:\DIR>"%ProgramFiles%\Windows Media Player\wmplayer.exe" /task NowPlaying %CD%\NAME.wav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接