MacOS - 如何从终端选择音频设备

问题描述 投票:0回答:1

我一直在开发一个 Python 程序来创建音频并播放现有的声音文件。我可以生成多个进程并让它们全部播放到笔记本电脑扬声器,但我想知道是否可以将每个信号发送到单独的声音设备。这样我就可以将效果应用于某些过程,但不能同时应用于所有过程。

我使用的是 MacBook 和 python

simpleaudio
,它调用 AudioToolbox 来连接到输出设备。我还安装了
ffmpeg
,所以如果更容易的话可以使用
ffplay
pydub
库使用此功能 - 将当前波形导出到临时文件,然后使用子进程和
ffplay
来播放它。

我可以获得设备列表,但不确定如何使用此列表来选择设备。

% ffplay -devices
Devices:
 D. = Demuxing supported
 .E = Muxing supported
 --
  E audiotoolbox    AudioToolbox output device
 D  avfoundation    AVFoundation input device
 D  lavfi           Libavfilter virtual input device
  E sdl,sdl2        SDL2 output device
 D  x11grab         X11 screen capture, using XCB

我确实看到一篇文章建议使用

ffmpeg
来列出设备,但我又不知道如何使用这个列表。

% ffmpeg -f lavfi -i sine=r=44100 -f audiotoolbox -list_devices true -
Input #0, lavfi, from 'sine=r=44100':
  Duration: N/A, start: 0.000000, bitrate: 705 kb/s
  Stream #0:0: Audio: pcm_s16le, 44100 Hz, mono, s16, 705 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (pcm_s16le (native) -> pcm_s16le (native))
Press [q] to stop, [?] for help
[AudioToolbox @ 0x135e3f230] CoreAudio devices:
[AudioToolbox @ 0x135e3f230] [0]               Background Music, (null)
[AudioToolbox @ 0x135e3f230] [1]   Background Music (UI Sounds), BGMDevice_UISounds
[AudioToolbox @ 0x135e3f230] [2]         MacBook Air Microphone, BuiltInMicrophoneDevice
[AudioToolbox @ 0x135e3f230] [3]           MacBook Air Speakers, BuiltInSpeakerDevice
[AudioToolbox @ 0x135e3f230] [4]               Aggregate Device, ~:AMS2_Aggregate:0
Output #0, audiotoolbox, to 'pipe:':
  Metadata:
    encoder         : Lavf59.27.100
  Stream #0:0: Audio: pcm_s16le, 44100 Hz, mono, s16, 705 kb/s
    Metadata:
      encoder         : Lavc59.37.100 pcm_s16le
size=N/A time=00:00:05.06 bitrate=N/A speed=0.984x    
video:0kB audio:436kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Exiting normally, received signal 2.

这至少给了我一个可识别的设备列表。如果我添加更多聚合设备,我可以在每个设备上播放不同的文件吗?

python macos audio ffmpeg
1个回答
0
投票

看起来没有人知道如何使用

simpleaudio
ffmpeg
执行此操作,但
sounddevice
库对 I/O 设备有更好的控制。另一个依赖,耶!

https://python-sounddevice.readthedocs.io/en/latest/

© www.soinside.com 2019 - 2024. All rights reserved.