Воспроизведение аудиофайлов с помощью Python

Я ищу хорошую библиотеку Python, которая позволяет мне воспроизводить аудиофайлы на моей малине Pi, используя стандартный аудиовыход.

До сих пор я пробовал несколько, но никто из них, похоже, не работает. Хотя пиглет работает на моем обычном компьютере, он вызывает ошибку на малиновой пи. Есть ли библиотека Python, которая была доказана как простая в использовании?

35 голосов | спросил Stein 18 PMpThu, 18 Apr 2013 16:04:51 +040004Thursday 2013, 16:04:51

7 ответов


26

Я рекомендую широко распространенный Pygame. Возможно, я ошибаюсь, но я считаю, что он предварительно установлен на Пи. Вы можете использовать музыкальный модуль микшера Pygame для воспроизведения аудиофайлов. Я добавил код примера ниже.

Предположим, что у нас есть аудиофайл под названием myFile.wav.

import pygame
pygame.mixer.init()
pygame.mixer.music.load("myFile.wav")
pygame.mixer.music.play()
while pygame.mixer.music.get_busy() == True:
    continue

ПРИМЕЧАНИЕ. Если это не удается, перейдите на терминал и обновите свою систему с помощью

apt-get update
apt-get upgrade

и повторите попытку.

ответил xxmbabanexx 18 PMpThu, 18 Apr 2013 16:37:27 +040037Thursday 2013, 16:37:27
10

Мне нужен скрипт для воспроизведения песни с тридцати секунд в фоновом режиме, а также ответа на другой пользовательский ввод. Затем я хотел, чтобы это закончило песню на каком-то мероприятии.

Я не думаю, что это особенно изящно, но я открыл трубку в фоновом режиме MPlayer.

import subprocess
player = subprocess.Popen(["mplayer", "song.mp3", "-ss", "30"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

Затем, когда я хотел завершить процесс MPlayer, я просто написал «q» для выхода в канал.

player.stdin.write("q")

Посмотрите документацию MPlayer для всех видов команд, которые вы можете передать таким образом, чтобы управлять воспроизведением.

Надеюсь, это будет полезно!

ответил user1616681 18 PMpThu, 18 Apr 2013 19:29:50 +040029Thursday 2013, 19:29:50
6

Другой вариант - использовать mpg321 и вызывать его из командной строки.

apt-get install mpg321

Затем в Python:

import os

os.system('mpg321 foo.mp3 &')

Pygame почти наверняка более устойчив, но, я полагаю, это зависит от ваших потребностей.

ответил Brandorf 18 PMpThu, 18 Apr 2013 19:06:11 +040006Thursday 2013, 19:06:11
3

Я бы рекомендовал pyglet вместо pygame , если вам не нужна графика. На мой взгляд, это проще, элегантнее и лучше поддерживается. Опять же, я ожидаю, что это может быть вопросом вкуса.

ответил Bex 21 Jam1000000amTue, 21 Jan 2014 11:06:42 +040014 2014, 11:06:42
0

Pygame дает вам приятный и простой способ загрузки и воспроизведения звуков по диапазону каналов.

ответил mrpi64 25 FebruaryEurope/MoscowbTue, 25 Feb 2014 17:24:16 +0400000000pmTue, 25 Feb 2014 17:24:16 +040014 2014, 17:24:16
0

Вы можете использовать несколько внешних игроков через трубы. Тем не менее, вы почти всегда будете испытывать потерю скорости. Также существует проблема с управлением воспроизведением.

Я рекомендую вам pyaudio, он отлично работает.

Если вы хотите также воспроизвести сжатые файлы, я буду настолько свободным, чтобы указать вам на мой модуль decoder.py. Вы можете найти его на PyPI.

Он также использует подпроцесс, но вызывает декодеры вместо игроков. Они не используют много CPU, и некоторые из них знают, как использовать аппаратное ускорение. Затем вы можете использовать pyaudio или что-то для вывода необработанных аудиоданных. Если вы хотите, вы можете использовать pygame, используя pygame.sndarray. Таким образом, вы можете воспроизводить больше форматов, чем поддержка pygame.

Я попробовал decoder.py в среде GUI PyQT, с pyaudio, а также используя aplay в качестве внешнего проигрывателя. Это было на малине Pi B.

Результаты были довольно удовлетворительными в обоих случаях.

Простота может быть поставлена ​​под сомнение.

decoder.py сам по себе очень прост, но вам нужно объединить его с другими библиотеками и увеличить строки кода.

Существует пример того, как воспроизводить файлы, включенные в decoder.py.

ответил Dalen 1 J000000Wednesday15 2015, 04:50:08
0

Я запускаю OSMC (Debian), и у меня есть звук для воспроизведения через динамики телевизора, подключенные через HDMI. https://youtu.be/p2ljmTE67gs

Мой метод был основан на вышеупомянутом решении, опубликованном @xxmbabanexx а также здесь . В принципе, мне пришлось добавить dtparam=audio=on в /boot/config.txt

ответил jjinking 4 Jpm1000000pmMon, 04 Jan 2016 20:29:10 +030016 2016, 20:29:10

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132