Найти - Пользователи
Полная версия: Воспроизведение mp3 под Windows
Начало » Python для экспертов » Воспроизведение mp3 под Windows
1 2 3
The gray Cardinal
Чем можно синхронно воспроизвести mp3? Вот так не очень хорошо, поскольку появляется визуальное окно, а оно мне совсем не нужно:
commandLine = 'MPLAY32 /play /close "C:\\Distr\\Music\\Audio\\buratino.mp3"'
os.popen4(commandLine)
bialix
поиск в гугле дает такой пример кода: http://www.daniweb.com/code/snippet208.html
с использованием COM, поэтому нужно, чтобы пакет pywin32 был установлен.
The gray Cardinal
bialix
поиск в гугле дает такой пример кода
Спасибо, но к сожалению, пример нерабочий - ошибок не выдаётся, но ничего не происходит - звук не воспроизводится.
bialix
а стандартный модуль winsound тоже не работает?
The gray Cardinal
bialix
а стандартный модуль winsound тоже не работает?
winsound.PlaySound(u'C:\\Distr\\Music\\Audio\\buratino.mp3', winsound.SND_FILENAME)
Нет, с MP3 не работает. Если ему передать путь к MP3, он воспроизводит “Стандартный звук” из назначенной в настоящий момент звуковой схемы (если схемы нет - пикает динамиком). А хочется воспроизвести именно указанный mp3…
The gray Cardinal
А можно запустить GUI-приложение в скрытом окне? Например, в VBScript это делается на раз:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "MPLAY32 /play /close C:\WINDOWS\Media\ding.wav", 0, 1
ZAN
Под Debian я использовал pymad -> http://spacepants.org/src/pymad/ - питоновская обертка для libmad -> http://sourceforge.net/project/showfiles.php?group_id=12349. И то и другое доступно также и для Windows.
Пример использования (взят из документации):
import mad, ao, sys
mf = mad.MadFile(sys.argv)
dev = ao.AudioDevice('oss', rate=mf.samplerate())
while 1:
buf = mf.read()
if buf is None:
break
dev.play(buf, len(buf))
The gray Cardinal
ZAN
я использовал pymad
Спасибо, но как-то уж слишком наворочено - чтобы проиграть mp3, нужно устанавливать специально две программы? Имхо, должен быть способ проще…
bialix
The gray Cardinal
А можно запустить GUI-приложение в скрытом окне? Например, в VBScript это делается на раз:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "MPLAY32 /play /close C:\WINDOWS\Media\ding.wav", 0, 1
Вот как этот же самый код выглядит на Питоне


from win32com.client import Dispatch
wsh = Dispatch(“WScript.Shell”)
wsh.Run(“MPLAY32 /play /close 01.mp3”, 0, 1)
The gray Cardinal
bialix
Вот как этот же самый код выглядит на Питоне
Ага, спасибо, это выход :).
А вот что придумал я:
import ctypes, time
# синхронное воспроизведение указанного mp3 файла
ctypes.windll.winmm.mciExecute('play C:\\Temp\\kukryniksy-kaif.mp3 wait')
# асинхронное воспроизведение указанного midi файла с последующей остановкой
ctypes.windll.winmm.mciExecute('play C:\\Temp\\flourish.mid')
time.sleep(10)
ctypes.windll.winmm.mciExecute('close C:\\Temp\\flourish.mid')
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB