Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 3, 2008 11:45:58

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

Воспроизведение mp3 под Windows

Чем можно синхронно воспроизвести mp3? Вот так не очень хорошо, поскольку появляется визуальное окно, а оно мне совсем не нужно:

commandLine = 'MPLAY32 /play /close "C:\\Distr\\Music\\Audio\\buratino.mp3"'
os.popen4(commandLine)



Офлайн

#2 Янв. 3, 2008 11:56:46

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Воспроизведение mp3 под Windows

поиск в гугле дает такой пример кода: http://www.daniweb.com/code/snippet208.html
с использованием COM, поэтому нужно, чтобы пакет pywin32 был установлен.



Офлайн

#3 Янв. 3, 2008 14:48:26

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

Воспроизведение mp3 под Windows

bialix
поиск в гугле дает такой пример кода
Спасибо, но к сожалению, пример нерабочий - ошибок не выдаётся, но ничего не происходит - звук не воспроизводится.



Офлайн

#4 Янв. 3, 2008 16:05:59

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Воспроизведение mp3 под Windows

а стандартный модуль winsound тоже не работает?



Офлайн

#5 Янв. 3, 2008 16:28:13

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

Воспроизведение mp3 под Windows

bialix
а стандартный модуль winsound тоже не работает?
winsound.PlaySound(u'C:\\Distr\\Music\\Audio\\buratino.mp3', winsound.SND_FILENAME)
Нет, с MP3 не работает. Если ему передать путь к MP3, он воспроизводит “Стандартный звук” из назначенной в настоящий момент звуковой схемы (если схемы нет - пикает динамиком). А хочется воспроизвести именно указанный mp3…



Отредактировано (Янв. 3, 2008 16:30:44)

Офлайн

#6 Янв. 3, 2008 16:42:10

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

Воспроизведение mp3 под Windows

А можно запустить GUI-приложение в скрытом окне? Например, в VBScript это делается на раз:

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "MPLAY32 /play /close C:\WINDOWS\Media\ding.wav", 0, 1



Офлайн

#7 Янв. 3, 2008 18:52:57

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

Воспроизведение mp3 под Windows

Под 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))



Офлайн

#8 Янв. 3, 2008 19:09:37

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

Воспроизведение mp3 под Windows

ZAN
я использовал pymad
Спасибо, но как-то уж слишком наворочено - чтобы проиграть mp3, нужно устанавливать специально две программы? Имхо, должен быть способ проще…



Офлайн

#9 Янв. 3, 2008 21:48:25

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Воспроизведение mp3 под Windows

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)



Офлайн

#10 Янв. 3, 2008 22:23:37

The gray Cardinal
От:
Зарегистрирован: 2007-03-07
Сообщения: 422
Репутация: +  0  -
Профиль   Отправить e-mail  

Воспроизведение mp3 под Windows

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')



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version