Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 4, 2008 03:29:13

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

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

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')
Не уверен, что мой код - это выход. Управлять запущенным плеером никак невозможно.
Я бы все-таки поразбирался с СОМ объектом WMPlayer и понял, почему он не работает.
Вероятно пример устарел и новые версии WMPlayer требуют другой последовательности действий.

Вариант с ctypes хорош уже постольку, поскольку можно произвольно остановить музон.



Офлайн

#2 Янв. 4, 2008 11:45:59

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

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

bialix
Я бы все-таки поразбирался с СОМ объектом WMPlayer и понял, почему он не работает.
Вероятно пример устарел и новые версии WMPlayer требуют другой последовательности действий.
Да, правильная идея, но как-то пока не получается… Интересно, что объект WMPlayer нормально работает на HTML-странице, в частности, через объект “htmlfile” (своего рода эмуляция HTML-страницы). Вот обсуждение с примерами кода:
http://forum.script-coding.info/viewtopic.php?pid=7556#p7556
Воспроизвести этот пример на Python у меня не получилось, та же петрушка - ошибок нет, но ничего не происходит. Может, у тебя получится…



Офлайн

#3 Янв. 4, 2008 14:34:59

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

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

The gray Cardinal
bialix
Я бы все-таки поразбирался с СОМ объектом WMPlayer и понял, почему он не работает.
Вероятно пример устарел и новые версии WMPlayer требуют другой последовательности действий.
Да, правильная идея, но как-то пока не получается… Интересно, что объект WMPlayer нормально работает на HTML-странице, в частности, через объект “htmlfile” (своего рода эмуляция HTML-страницы). Вот обсуждение с примерами кода:
http://forum.script-coding.info/viewtopic.php?pid=7556#p7556
Воспроизвести этот пример на Python у меня не получилось, та же петрушка - ошибок нет, но ничего не происходит. Может, у тебя получится…
Я только недавно с СОМ-объектами начал разбираться. Я пока не волшебник.
Однако метод с htmlfile кажется дико неспортивным. Особенно этот цикл со Sleep. Это как говорится – дурно пахнет. Переписать на питоне – вроде бы можно.
Надо копать MSDN, только у меня нет спортивного интереса.



Офлайн

#4 Янв. 4, 2008 21:47:10

dvs
От:
Зарегистрирован: 2006-05-22
Сообщения: 176
Репутация: +  3  -
Профиль   Отправить e-mail  

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

Может вот это http://www.speech.kth.se/snack/ поможет?



Офлайн

#5 Янв. 5, 2008 00:05:20

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

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

Короче вот: http://pymedia.org/
проверял - всё пашет. Ну вы тут и намудрили%)



Офлайн

#6 Янв. 5, 2008 15:28:04

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

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

Спасибо за ссылки на модули! Но хочется нативными средствами…
Не могу понять, почему один и тот же код на VBScript работает, а на Python - нет.

Set WMPlayer = CreateObject("WMPlayer.OCX")
WMPlayer.settings.autoStart = False
WMPlayer.settings.enableErrorDialogs = False
WMPlayer.URL = "C:\WINDOWS\Media\chimes.wav"
WMPlayer.controls.play()
While WMPlayer.playState <> 1
WScript.Echo WMPlayer.playState
WScript.Sleep 1000
Wend
WScript.Echo WMPlayer.playState
import time
from win32com.client import Dispatch
WMPlayer = Dispatch("WMPlayer.OCX")
WMPlayer.settings.autoStart = False
WMPlayer.settings.enableErrorDialogs = False
WMPlayer.URL = '"C:\\WINDOWS\\Media\\chimes.wav"'
WMPlayer.controls.play()
while WMPlayer.playState <> 1:
    print WMPlayer.playState
    time.sleep(1)
print WMPlayer.playState
В Питоне playState всегда 9 (wmposMediaLocating), никак не может открыть файл… На VBScript открывает почти мгновенно, всё работает.



Офлайн

#7 Янв. 6, 2008 01:02:41

well
От:
Зарегистрирован: 2006-11-20
Сообщения: 163
Репутация: +  0  -
Профиль   Отправить e-mail  

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

The gray Cardinal
Спасибо за ссылки на модули! Но хочется нативными средствами…
Не могу понять, почему один и тот же код на VBScript работает, а на Python - нет.
Set WMPlayer = CreateObject("WMPlayer.OCX")
WMPlayer.settings.autoStart = False
WMPlayer.settings.enableErrorDialogs = False
WMPlayer.URL = "C:\WINDOWS\Media\chimes.wav"
WMPlayer.controls.play()
While WMPlayer.playState <> 1
WScript.Echo WMPlayer.playState
WScript.Sleep 1000
Wend
WScript.Echo WMPlayer.playState
import time
from win32com.client import Dispatch
WMPlayer = Dispatch("WMPlayer.OCX")
WMPlayer.settings.autoStart = False
WMPlayer.settings.enableErrorDialogs = False
WMPlayer.URL = '"C:\\WINDOWS\\Media\\chimes.wav"'
WMPlayer.controls.play()
while WMPlayer.playState <> 1:
    print WMPlayer.playState
    time.sleep(1)
print WMPlayer.playState
В Питоне playState всегда 9 (wmposMediaLocating), никак не может открыть файл… На VBScript открывает почти мгновенно, всё работает.
Кажись, ясно в чем проблема, надо так:

import time
from win32com.client import Dispatch
WMPlayer = Dispatch(“WMPlayer.OCX”)
WMPlayer.settings.autoStart = False
WMPlayer.settings.enableErrorDialogs = True
WMPlayer.URL = “C:\\WINDOWS\\Media\\chimes.wav”
print WMPlayer.URL
WMPlayer.controls.play()
while WMPlayer.playState <> 1:
print WMPlayer.playState
time.sleep(1)
print WMPlayer.playState

Лишние кавычки :)



Офлайн

#8 Янв. 6, 2008 10:10:35

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

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

well
Лишние кавычки
Ты хочешь сказать, у тебя это работает? У меня - нет, playState всегда 9. А кавычки появились в результате диких попыток добиться работы. Не работает ни с кавычками, ни без.
ActivePython 2.5, WinXP SP2.



Отредактировано (Янв. 6, 2008 10:11:47)

Офлайн

#9 Янв. 6, 2008 10:31:16

well
От:
Зарегистрирован: 2006-11-20
Сообщения: 163
Репутация: +  0  -
Профиль   Отправить e-mail  

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

The gray Cardinal
well
Лишние кавычки
Ты хочешь сказать, у тебя это работает? У меня - нет, playState всегда 9. А кавычки появились в результате диких попыток добиться работы. Не работает ни с кавычками, ни без.
ActivePython 2.5, WinXP SP2.
да, у меня заиграло, причем, почему-то дико-громко. Я начал задумываться о ночном просиживании перед компом в наушниках и покупке нового кресла :). У меня Python 2.5.1 + pywin32-210.win32-py2.5 на WinXP SP2. А что показывает если так сделать:
WMPlayer.settings.enableErrorDialogs = True
Просто, у меня в случае с 2-мя парами кавычек выбрасывало окно, что неверный адрес.

Теперь немного о непонятном: если я выполняю код в стандартном питоновском IDLE, то все работает! Но!!! Если я просто запускаю файл или выполняю этот код в PyScripter, то у меня тоже все время 9-ка. Интересно, почему такое может быть?



Отредактировано (Янв. 6, 2008 11:18:12)

Офлайн

#10 Янв. 6, 2008 14:13:05

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

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

При enableErrorDialogs=True у меня не выбрасывает никаких окон, ни с кавычками, ни без. И не работает ни из-под SciTE, ни при “прямом” запуске - всегда бесконечно идёт девятка. При запуске из-под Pythonwin последний просто виснет намертво. Работает только при пошаговом исполнении в отладчике Pythonwin (что вообще не понятно).



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version