Что кросс-платформенный путь состоит в том, чтобы играть звуковой файл в Python?

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

19
задан Jon Seigel 27 April 2010 в 03:43
поделиться

3 ответа

Можно использовать , wxPython

sound = wx.Sound('sound.wav')
sound.Play(wx.SOUND_SYNC)

или

sound.Play(wx.SOUND_ASYNC)

Здесь является примером из wxPython демонстрации.

12
ответ дан 30 November 2019 в 04:54
поделиться

Вы посмотрели на pymedia? Это выглядит столь же легким как это для проигрывания файла WAV:

import time, wave, pymedia.audio.sound as sound
f= wave.open('YOUR FILE NAME', 'rb')
sampleRate= f.getframerate()
channels= f.getnchannels()
format= sound.AFMT_S16_LE
snd= sound.Output(sampleRate, channels, format)
s= f.readframes(300000)
snd.play(s)
while snd.isPlaying(): time.sleep(0.05)

Касательно: http://pymedia.org/tut/play_wav.html

, Конечно, можно взглянуть на Wiki Python под Аудио ( http://wiki.python.org/moin/Audio/ ) для других библиотек такой как https://docs.python.org/library/wave.html или снова в Wiki Python под Игровыми Библиотеками ( http://wiki.python.org/moin/PythonGameLibraries ), который укажет на Вас на привязку к OpenAL или Pygame, который имеет звуковые модули.

И наконец, хотя я не знаю ограничения pyaudio, Ваше сообщение об ошибке больше кажется, что библиотека не может найти устройство вывода по умолчанию больше, чем устройство используется другим процессом. Возможно, взгляните на то, какое устройство вывода возвращается get_default_output_device_info из pyaudio, и сравните его с тем, что Ваша настройка по умолчанию в Ubuntu.

4
ответ дан 30 November 2019 в 04:54
поделиться

Я не абсолютно уверен, выполняет ли это Ваши требования, но я сразу думал PyGame

http://www.pygame.org/docs/ref/mixer.html#pygame.mixer.Sound

from pygame import mixer

mixer.init()
s = mixer.Sound('sound.wav')
s.play()
1
ответ дан 30 November 2019 в 04:54
поделиться
Другие вопросы по тегам:

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