Python Audio — способы воспроизведения Аудио-файлов.
Python Audio - хочу убедиться, что Python способен даже проигрывать Аудио-файлы. Сомнений нет, но хотелось бы узнать способ воспроизведения Аудио-файлов.
Уверенность основана на том, что из программы, написанной на Python’е, всегда можно обратиться к подпрограмме, написанной на другом языке программирования, на котором эта задача решена достаточно качественно.
Для начала решил использовать Help:
>>> help (Audio)
Traceback (most recent call last):
File «<pyshell#6>», line 1, in <module>
help (Audio)
NameError: name ‘Audio’ is not defined
>>> help (audio)
Traceback (most recent call last):
File «<pyshell#7>», line 1, in <module>
help (audio)
NameError: name ‘audio’ is not defined
Выручила такая информация:
Для создания игр и приложений, требующих нестандартного интерфейса, можно использовать библиотеку Pygame. Она также предоставляет обширные средства работы с мультимедиа: с её помощью можно управлять звуком и изображениями, воспроизводить Видео.
Согласно рекомендации со страницы http://www.pygame.org/wiki/GettingStarted, используя команду
python -m pip install —user pygame
, инсталлировал библиотеку Pygame. Пришлось только убить 3 в начале команды, то есть заменить python3 на python.
Для проверки успешности инсталляции библиотеки Pygame использовал команду
python -m pygame.examples.aliens
Открылись, а затем закрылись два чёрных ДОСовских окна — считаю, что проверка пройдена. Получил совет «If it works, you are ready to go! Continue on to the tutorials.» Перешёл по ссылке на списки книг и был разочарован качеством переводов — надо самостоятельно подбирать литературу по Pygame.
Для проверки возможности использования Pygame исполнил в интерпретаторе Python команду import Pygame — ошибка не выскочила, всё в порядке.
Привожу информацию об извлечении Звуков:
11.4 Звуки
Этот раздел использует звук щелчка, который быть может скачан с помощью нажатия правой кнопки мыши здесь и выбора “save link as” (или “save target as”, в зависимости от того, как это пишется в вашем браузере).
Так же как и картинки, звуки должны быть загружены перед использованием. Это должно быть проделано только один раз, до главного цикла программы. Следующая команда загружает звуковой файл и создаёт переменную click_sound для того, чтобы ссылаться на него:
click_sound = pygame.mixer.Sound(«click.wav»)
Этот звук можно проиграть, когда пользователь нажимает на кнопку мыши, с помощью следующего кода:
for event in pygame.event.get():
‘ if event.type == pygame.QUIT:
‘ done=True
‘ if event.type == pygame.MOUSEBUTTONDOWN:
‘ click_sound.play()
Рабочий код программы таков:
# Program Sound
import pygame
# Call this function so the Pygame library can initialize itself
# initialize all imported pygame modules
pygame.init()
# click_sound = pygame.mixer.Sound(«click.wav»)
# click_sound = pygame.mixer.Sound(‘BREEZE.WAV’)
click_sound = pygame.mixer.Sound(«laser5.ogg»)
# Create an 800×600 sized screen — чтобы мышь по экрану бегала и был Х для закрытия окна
screen = pygame.display.set_mode([800, 600])
# Этот звук можно проиграть, когда пользователь нажимает на кнопку мыши,
# с помощью следующего кода:
done = False
while not done:
‘ for event in pygame.event.get():
‘ if event.type == pygame.QUIT:
‘ done=True
‘ if event.type == pygame.MOUSEBUTTONDOWN:
‘ print (‘MY__MOUSE_KEY’) # Печать идёт в окне Shell !
‘ click_sound.play()
pygame.quit()
Без двух строк
pygame.init()
screen = pygame.display.set_mode([800, 600])
программа неработоспособна!
Апострофы в начале строк введены, чтобы WordPress не сожрал пробелы — перед запуском программы апострофы нужно убрать!
Существует модуль winsound, который способен проигрывать звук в Windows, но похоже, что только в формате wav.
Чтобы вскользь ознакомиться с модулем winsound, исполнил в Интерпретаторе Python три команды:
>>> import winsound
>>> dir (winsound)
['Beep', 'MB_ICONASTERISK', 'MB_ICONEXCLAMATION', 'MB_ICONHAND', 'MB_ICONQUESTION', 'MB_OK', 'MessageBeep', 'PlaySound', 'SND_ALIAS', 'SND_APPLICATION', 'SND_ASYNC', 'SND_FILENAME', 'SND_LOOP', 'SND_MEMORY', 'SND_NODEFAULT', 'SND_NOSTOP', 'SND_NOWAIT', 'SND_PURGE', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
>>> help (winsound)
Help on module winsound:NAME
winsoundDESCRIPTION
PlaySound(sound, flags) — play a sound
SND_FILENAME — sound is a wav file name
SND_ALIAS — sound is a registry sound association name
SND_LOOP — Play the sound repeatedly; must also specify SND_ASYNC
SND_MEMORY — sound is a memory image of a wav file
SND_PURGE — stop all instances of the specified sound
SND_ASYNC — PlaySound returns immediately
SND_NODEFAULT — Do not play a default beep if the sound can not be found
SND_NOSTOP — Do not interrupt any sounds currently playing
SND_NOWAIT — Return immediately if the sound driver is busyBeep(frequency, duration) — Make a beep through the PC speaker.
MessageBeep(type) — Call Windows MessageBeep.FUNCTIONS
Beep(frequency, duration)
A wrapper around the Windows Beep API.frequency
Frequency of the sound in hertz.
Must be in the range 37 through 32,767.
duration
How long the sound should play, in milliseconds.MessageBeep(type=0)
Call Windows MessageBeep(x).x defaults to MB_OK.
PlaySound(sound, flags)
A wrapper around the Windows PlaySound API.sound
The sound to play; a filename, data, or None.
flags
Flag values, ored together. See module documentation.DATA
MB_ICONASTERISK = 64
MB_ICONEXCLAMATION = 48
MB_ICONHAND = 16
MB_ICONQUESTION = 32
MB_OK = 0
SND_ALIAS = 65536
SND_APPLICATION = 128
SND_ASYNC = 1
SND_FILENAME = 131072
SND_LOOP = 8
SND_MEMORY = 4
SND_NODEFAULT = 2
SND_NOSTOP = 16
SND_NOWAIT = 8192
SND_PURGE = 64FILE
c:\python36\dlls\winsound.pyd
Нужно будет со временем попробовать модуль winsound и сравнить его возможности с возможностями звуковых функций Python Pygame, который, судя по обилию звуковых функций, может проигрывать многие звуковые форматы.
Причём есть чёткий критерий: он способен воспроизводить все звуковые форматы, которые воспроизводит проигрыватель VLC Media Player.
Pygame не сможет проигрывать все .wav файлы, которые можно найти в интернете. Если бесплатная программа VLC Media Player не сможет проиграть звук, то не сможет это сделать и Pygame.
==
==
Приглашаю всех высказываться в Комментариях. Критику и обмен опытом одобряю и приветствую. В хороших комментариях сохраняю ссылку на сайт автора!
И не забывайте, пожалуйста, нажимать на кнопки социальных сетей, которые расположены под текстом каждой страницы сайта.
Продолжение тут…