问题标签 [mpd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - MPD、FIFO、Python、Audioop、Arduino 和电压表:“伪造”VU 表
我正在尝试使用连接到 Arduino(它本身连接到一些 5V 电压表)的计算机来“伪造”一个老式的立体声 VU 表。我的目标是让正在播放音频文件的计算机分析信号并通过串行连接将幅度信息发送到 Arudino,以显示在电压表上。
我正在使用 MPD 渲染音频并将其发送到 USB DAC (ODAC)。MPD 也输出到 FIFO,我使用 Python 脚本读取。我从 FIFO 中读取 4096 字节块,然后使用 audioop 库将该块/样本拆分为左右通道并计算每个通道的最大幅度。
这就是问题所在——我被数据淹没了。我猜我的数学是错误的,或者我不明白 FIFO 是如何工作的(或者可能两者兼而有之)。MPD 以 44100:16:2 格式输出所有内容——我认为这意味着它将每秒输出 44,100 个 4 字节样本。因此,如果我抓取 4096 字节的块,我应该期望每秒大约 43 个块。但是我得到的远不止这些(超过 100 个),而且如果我增加我的块大小,我每秒获得的块数不会改变。例如,如果我将我的块大小加倍到 8192,我仍然每秒获得大致相同数量的块。很明显我做错了什么,但我不知道它是什么。有人有什么想法吗?
这是我的 mpd.conf 文件的相关部分:
这是 Python 脚本:
streaming - 验证 MPD 文件 - 使用 MPEG-DASH
我刚刚开始使用 MPEG-DASH(从客户端),遵循 c057623_ISO_IEC_23009-1_2012 规范。
有谁知道是否有公共库或开源来验证我收到的 MPD 文件?
我处理xml没有问题。
任何帮助将不胜感激。
audio - 为要通过 mpd 使用的 USB-DAC 配置音量控制
我正在使用带有 Raspbian 的 Raspberry Pi 和 NuForce uDAC-3 USB-DAC 构建音乐播放器系统。
我使用 /etc/mpd.conf 中的这些行让 mpd 使用 DAC 而不是 Pi 的声音系统。据我所知,这里最重要的是选择硬件设备 1 而不是默认的 0。
但是,用于我的 DAC (snd_usb_audio) 的驱动程序不支持硬件音量控制。例如,在 alsamixer 中没有可用的音量控制。据我所知,这是该驱动程序的已知“功能”,或者它支持该 DAC。我通过在 /etc/mpd.conf 中取消注释来控制音量:
现在的主要问题是音量控制有一些滞后,而集成音响系统则没有。我的意思是,当我在客户端程序 (QMPDClient) 中滑动音量控制时,在听到音量变化之前会有短暂但明显的延迟。这是可以忍受的,但让我想知道一切是否真的按应有的方式工作。
第二个问题,与第一个问题有点相关,我想知道是否有办法让声音更完美,就任何配置文件而言。
我尝试了各种 /etc/asound.conf 示例,我在互联网上找到了这些示例,但要么我不明白它们应该做什么,要么它们根本不起作用。我想我会得到一个用于 mpd 识别的 DAC 的主音量控制,或者一个具有主音量控制并将声音馈送到 DAC 的虚拟声卡。最初,/etc/asound.conf 是空的,现在仍然是空的,现在似乎没有任何影响。
只是为了它有任何相关性,音乐位于从 CD 中翻录的 .flac 文件中。
python - 在 Python 中代理一个类
我正在使用 python-mpd2 模块在 GUI 应用程序中控制 Raspberry Pi 上的媒体播放器。因此,我想在后台优雅地处理连接错误和超时(有问题的播放器在 60 秒后断开 MPD 连接)。但是,MPD 模块没有单一的入口点,通过它可以发送所有命令或检索我可以修补的信息。
我想要一个允许访问所有与 mpd.MPDClient 相同的方法的类,但让我添加我自己的错误处理。换句话说,如果我这样做:
并且抛出了一个连接错误,我想抓住它并重新发送相同的命令。除了必须重新连接到服务器造成的小延迟之外,用户不应该注意到有任何问题。
到目前为止,这是我想出的解决方案。它在我的应用程序中工作,但并没有真正实现我的目标。
我可以为每个 MPD 命令添加一个方法到这个类,例如:
但这似乎远非实现它的最佳方式。
vagrant - 配置多个 mpd 实例的 Chef 配方
我尝试创建一个厨师食谱以在我的 vagrant 虚拟框中启动多个 mpd 实例(使用 chef-solo)。
我想像这样在我的 Vagrantfile 中配置每个实例:
所以配方应该采用这些设置并循环它们(为每个通道创建一个 mpd 实例)。
这是我目前的食谱:
我有几个问题:
- Ist 不会为每个 mpd 实例创建系统服务,所以我可以做到
sudo service mpd_mix start
. 为什么? /etc/mpd_mix.conf
它在启动 mpd 时不使用配置文件,因为它仍然调用/etc/init.d/mpd start
which uses/etc/mpd.conf
. 我该如何更改它,以便它为每个 mpd 实例使用正确的配置文件?- 为创建配置文件调整属性不能按预期工作(请参阅上面代码中的 node.set 部分)。两个配置文件,
/etc/mpd_tech.conf
并/etc/mpd_mix.conf
使用技术通道属性。看起来混音设置不知何故被覆盖了?我该如何解决?
我真的很感激这方面的一些帮助,因为我对厨师食谱很陌生。
mpi - 无法绑定到“127.0.0.1:6600”:地址已在使用中
我将 ubuntu 12.10 用于我的 MPI(消息传递接口)配置我在安装后安装了 mpd 我已经启动了 mpd,它通常启动时没有错误消息显示但是当我尝试运行命令“mpd &”它给出我的错误消息“无法绑定到'127.0.0.1:6600':地址已在使用中”我尝试了很多解决方案,但结果是一样的。
root@ub0:~# service mpd start
启动 Music Player Daemon mpd
[ OK ] root@ub0:~# service mpd restart停止音乐播放器守护进程 mpd
[OK] 启动音乐播放器守护进程 mpd
[OK] root@ub0:~# mpd &[1] 2881 root@ub0:~# 无法绑定到 '127.0.0.1:6600': 地址已在使用中
[1]+ 退出 1 mpd
根@ub0:~#
audio - MPD 在停止时断开 icecast 连接
由于我在 linux 上移动了流媒体服务器,因此遇到以下问题:我将 MPD 与 icecast 一起使用,并且每次 MPD 停止播放时,流都会关闭。这是一个问题,因为当我从播放列表更改为流时,MPD 会断开与 icecast 的连接,并且客户端必须刷新。
重新创建: 1) 使用 MPD 客户端播放歌曲 2) 停止歌曲 3) 再次播放歌曲
与流的连接被丢弃,并开始一个新的连接。
如何保持 icecast 连接打开?
linux - 使用 pulseaudio 释放设备的任何命令
我对脉冲音频和 alsa 完全陌生。情况是这样的:
- 我已经为 alsa 编译了 mpd。这是嵌入式系统,mpd 的脉冲音频插件不可用。
- 当我不启动脉冲音频时,mpd 使用 alsa 运行良好
- 一旦我启动脉冲音频 [不幸的是蓝牙音频需要它],mpd/alsa 就会停止工作。
似乎,以某种方式脉冲音频正在抓住设备而不是放开它。即使在我停止脉冲音频守护程序之后。
之后尝试运行 mpd 会给我:
root@FINGI_GCC:~# mpc play http://relay3.slayradio.org:8000/ [暂停] #1/1 0:00/0:00 (0%) 音量:100% 重复:关闭随机:关闭单曲:关闭消耗:关闭错误:打开音频设备时出现问题
所以我想知道如何重置脉冲音频?需要在同一台设备上继续运行脉冲音频、mpd、alsa ..但不是同时运行。
对此有何建议?
node.js - npm mpd - 如何对 mpd 服务器进行身份验证
我正在使用 node.js 和 npm 模块mpd与不同主机上的 mpd 服务器通信。我的客户端连接到 mpd 服务器,但我无法向服务器发送任何命令。尝试发送命令时,我得到一个
mpd 服务器受密码保护。我试图用这个进行身份验证
这不起作用。如何使用此模块的密码连接到 mpd 服务器?
python - 如何处理代理类中的不可用主机(ConnectionRefusedError)
我有一个非常基本的代理类(帮助我编写它的朋友坚持认为它是一个装饰器类)用于python-mpd2。
这个类看起来像这样
到目前为止,只要有可连接的 mpd 主机,它就可以很好地工作。如果没有 mpd 服务器,我会得到
ConnectionRefusedError: [Errno 111] 连接被拒绝
我正在寻找处理这个异常的好模式
- 当没有可用的主机时,你能想出一种优雅的方法来防止程序崩溃吗?
- 每当调用代理时,我应该在代理内部还是外部捕获异常?
- 将字符串“主机不可用”(或类似的)作为返回值是一个好主意,还是可以以更好的方式通知调用代理的方法/函数?