我正在寻找一种使用 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。
谢谢!
最佳答案
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 输出设备配置中的错误应用变通方法,
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
关于windows - 在不使用 StereoMix 的情况下使用 Windows ffmpeg 录制音频输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31282600/