设置 pygame 混合器的输出设备

2024-01-10

我需要使用 pygame 通过不同的音频设备播放音频文件。显然这可以通过参数来实现devicename在方法中pygame.mixer.init() https://www.pygame.org/docs/ref/mixer.html#pygame.mixer.init,但没有相关文档。

我的问题:

1-如何设置 pygame 混合器的输出设备(或通道/声音,如果可能)?

2-如何列出所有可用的设备名称?


我找到了解决方案。 Pygame v2 使这一切成为可能。由于pygame使用sdl2,我们可以通过pygame自己实现的sdl2库来获取音频设备名称。

更新方法

关于 pygame 的最新版本;

获取音频设备名称:

import pygame
import pygame._sdl2.audio as sdl2_audio

def get_devices(capture_devices: bool = False) -> Tuple[str, ...]:
    init_by_me = not pygame.mixer.get_init()
    if init_by_me:
        pygame.mixer.init()
    devices = tuple(sdl2_audio.get_audio_device_names(capture_devices))
    if init_by_me:
        pygame.mixer.quit()
    return devices

并通过特定设备播放音频文件:

from time import sleep
import pygame

def play(file_path: str, device: Optional[str] = None):
    if device is None:
        devices = get_devices()
        if not devices:
            raise RuntimeError("No device!")
        device = devices[0]
    print("Play: {}\r\nDevice: {}".format(file_path, device))
    pygame.mixer.init(devicename=device)
    pygame.mixer.music.load(file_path)
    pygame.mixer.music.play()
    try:
        while True:
            sleep(0.1)
    except KeyboardInterrupt:
        pass
    pygame.mixer.quit()

老方法

在 pygame v2 的早期版本上;

获取音频设备名称:

import pygame._sdl2 as sdl2

pygame.init()
is_capture = 0  # zero to request playback devices, non-zero to request recording devices
num = sdl2.get_num_audio_devices(is_capture)
names = [str(sdl2.get_audio_device_name(i, is_capture), encoding="utf-8") for i in range(num)]
print("\n".join(names))
pygame.quit()

在我的设备上,代码返回:

HDA Intel PCH, 92HD87B2/4 Analog
HDA Intel PCH, HDMI 0
C-Media USB Headphone Set, USB Audio

并设置 pygame 混音器的输出音频设备:

import pygame
import time

pygame.mixer.pre_init(devicename="HDA Intel PCH, 92HD87B2/4 Analog")
pygame.mixer.init()
pygame.mixer.music.load("audio.ogg")
pygame.mixer.music.play()
time.sleep(10)
pygame.mixer.quit()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设置 pygame 混合器的输出设备 的相关文章

  • 如何在python中读取多个文件中的文本

    我的文件夹中有许多文本文件 大约有 3000 个文件 每个文件中第 193 行是唯一包含重要信息的行 我如何使用 python 将所有这些文件读入 1 个文本文件 os 模块中有一个名为 list dir 的函数 该函数返回给定目录中所有文
  • 如何生成给定范围内的回文数列表?

    假设范围是 1 X 120 这是我尝试过的 gt gt gt def isPalindrome s check if a number is a Palindrome s str s return s s 1 gt gt gt def ge
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • 导入错误:没有名为 _ssl 的模块

    带 Python 2 7 的 Ubuntu Maverick 我不知道如何解决以下导入错误 gt gt gt import ssl Traceback most recent call last File
  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • Flask 和 uWSGI - 无法加载应用程序 0 (mountpoint='')(找不到可调用或导入错误)

    当我尝试使用 uWSGI 启动 Flask 时 出现以下错误 我是这样开始的 gt cd gt root localhost uwsgi socket 127 0 0 1 6000 file path to folder run py ca
  • 使用 OpenPyXL 迭代工作表和单元格,并使用包含的字符串更新单元格[重复]

    这个问题在这里已经有答案了 我想使用 OpenPyXL 来搜索工作簿 但我遇到了一些问题 希望有人可以帮助解决 以下是一些障碍 待办事项 我的工作表和单元格数量未知 我想搜索工作簿并将工作表名称放入数组中 我想循环遍历每个数组项并搜索包含特
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct
  • ExpectedFailure 被计为错误而不是通过

    我在用着expectedFailure因为有一个我想记录的错误 我现在无法修复 但想将来再回来解决 我的理解expectedFailure是它会将测试计为通过 但在摘要中表示预期失败的数量为 x 类似于它如何处理跳过的 tets 但是 当我
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • 如何从没有结尾的管道中读取 python 中的 stdin

    当管道来自 打开 时 不知道正确的名称 我无法从 python 中的标准输入或管道读取数据 文件 我有作为例子管道测试 py import sys import time k 0 try for line in sys stdin k k
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data

随机推荐

  • 如何在Qt Creator中配置CDB?

    问题here https stackoverflow com q 5318691 559085与我的相同 但那里的解决方案对我不起作用 我在 Windows 7 上使用 QtCreator 2 4 1 当我尝试调试一个简单的 hello w
  • 数组解构跳过值

    My 爱彼迎风格指南 https github com airbnb javascript告诉我我应该使用数组解构对于下面的作业 const splittedArr 1 2 3 4 5 const result splittedArr 1
  • MacPython:以编程方式查找所有串行端口

    我正在寻找一种解决方案 以编程方式使用 python 返回所有可用的串行端口 此刻我正在进入ls dev tty or ls dev cu 进入终端以列出端口并将它们硬编码到 pyserial 类中 你可以这样做 import glob d
  • 执行 sidekiq 登录 heroku

    我想在我的 heroku 环境中执行 sidekiq 日志文件 但我在文档中找不到任何内容 谷歌也没有在这里帮助我 我确信它一定是这样的exec sidekiq L log sidekiq log但该命令在 Heroku 上失败 如何在 h
  • 通过触摸或点击在 Android Google 地图上添加标记

    我想在 Android 上使用 Google 地图开发地图应用程序 现在 我想通过触摸或点击地图在地图上添加标记 如何应用触摸事件将标记放在地图上 尝试使用新的谷歌地图 API v2 https developers google com
  • 将非连续列数据合并为单列

    我想将值从列 B C D 复制到列 J 同时保持值的行位置 我想将值从 E F G 列复制到 K 列 同时保持行位置 Desired results in Cols J K The colors are only to clarify my
  • AngularJS - 依赖下拉列表:在模型中存储一个值,使用其他值作为下一个下拉列表的源

    我有两个依赖的下拉菜单 一个显示国家 另一个显示国家 我希望第一个只保存国家 地区 ID 但使用整个对象作为源 对于第二个下拉列表 这是我到目前为止所拥有的 同一屏幕中可能有许多这样的下拉菜单 因此这可能会使事情变得复杂 因为我需要复制临时
  • 如何以编程方式从 win7 中的“屏幕分辨率”对话框获取显示器编号?

    当您按 屏幕分辨率 对话框中的 识别 按钮时 Windows 会在每个显示器上显示大的白色显示器编号 在 Windows XP 中 使用 EnumDisplayDevices 很容易以编程方式与显示器坐标一起找到它们 但在 Windows
  • 通过php提取excel中动态变化的数据

    我有一个打开的 Excel 工作表 另一个程序通过 DDE 不断更新该工作表 我希望有一个 php 脚本来访问此 Excel 工作表中的一些数据 我尝试过使用 PHPExcel 但似乎我无法让我所做的更改 例如通过 setCellValue
  • Grails:映射同一类型的字段和belongsTo的列名

    我正在尝试映射此类的列名称 class Amount String total Total amount of something String type Type of amount Dollars Times something Bon
  • 使用 jq/yq 进行遍历

    我有一个类似于下面的数据文件 user01 name User01 Name age 20 sex male state CA zip 92012 user02 name User02 Name age 22 sex female user
  • Gitlab 与 SonarQube 集成

    我对开发社区 特别是 DevOps 实践还很陌生 作为项目的一部分 我们正在尝试将 SonarQube 与 Gitlab 集成 在 SonarQube 和 Git CI 持续集成 上进行了一些研发 看起来插件已为 Github 和 Sona
  • apache http 基于 ip 重写/重定向

    我想将一个ip重定向到我网站的另一个视图 例如 我希望来自ip x的访问者看到www xxx com DEBUG 1当所有其他访问者看到正常的 www xxx com 时 我该如何在 apache 配置文件中执行此操作 使用哪些指令 下面是
  • 通过 NSUserDefaults 设置 ios UserAgent:工作一半的时间?

    这真让我抓狂 我有两个只是 UIWebView 的应用程序 使用 XCode 4 5 2 和 iOS 6 0 SDK 我想更改网络调用的 UserAgent 我在以下两个地方都使用了这段代码 NSString secretagent MyU
  • Eclipse CDT:禁用红色下划线

    我使用 eclipse cdt 并且包含了一些文件 不幸的是 我无法将包含路径添加到我的 Eclipse 项目中 因为这样当 Eclipse 开始对新添加的包含进行索引时 它总是会崩溃 因此我想关闭突出显示错误的功能 我可以在哪里执行此操作
  • 选择字段中的 Django 空标签 - 没有查询集

    在选择字段上设置空标签给我带来了一些问题 我看过类似的答案this https stackoverflow com questions 14541074 empty label choicefield django 但这只是谈论形式 假设我
  • Swift Core 数据与 Web 服务器同步

    我正在制作一个应用程序 在 Swift 中 需要在离线和在线模式下运行 当处于离线模式时 数据将存储在本地 CoreData 上 一旦检测到网络 在线 它应该与服务器同步并更新后端数据库 应该怎样做呢 有库或 Pod 吗 我见过这个帖子 h
  • 批量从文件中读取多行

    我想知道是否有一种方法可以从文件中批量读取多行 例如 with open filename rb as f for n lines in f process n lines 在这个函数中 我想做的是 对于每次迭代 将从文件中批量读取接下来的
  • UITableViewAutomaticDimension 无法按预期工作。迅速

    读完雷 文德利希之后guide https www raywenderlich com 1067 self sizing table view cells对于 自动调整表格视图单元格大小 以及这个问题 https stackoverflow
  • 设置 pygame 混合器的输出设备

    我需要使用 pygame 通过不同的音频设备播放音频文件 显然这可以通过参数来实现devicename在方法中pygame mixer init https www pygame org docs ref mixer html pygame