Найти - Пользователи
Полная версия: Воспроизведение mp3 под Windows
Начало » Python для экспертов » Воспроизведение mp3 под Windows
1 2 3
bialix
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 хорош уже постольку, поскольку можно произвольно остановить музон.
The gray Cardinal
bialix
Я бы все-таки поразбирался с СОМ объектом WMPlayer и понял, почему он не работает.
Вероятно пример устарел и новые версии WMPlayer требуют другой последовательности действий.
Да, правильная идея, но как-то пока не получается… Интересно, что объект WMPlayer нормально работает на HTML-странице, в частности, через объект “htmlfile” (своего рода эмуляция HTML-страницы). Вот обсуждение с примерами кода:
http://forum.script-coding.info/viewtopic.php?pid=7556#p7556
Воспроизвести этот пример на Python у меня не получилось, та же петрушка - ошибок нет, но ничего не происходит. Может, у тебя получится…
bialix
The gray Cardinal
bialix
Я бы все-таки поразбирался с СОМ объектом WMPlayer и понял, почему он не работает.
Вероятно пример устарел и новые версии WMPlayer требуют другой последовательности действий.
Да, правильная идея, но как-то пока не получается… Интересно, что объект WMPlayer нормально работает на HTML-странице, в частности, через объект “htmlfile” (своего рода эмуляция HTML-страницы). Вот обсуждение с примерами кода:
http://forum.script-coding.info/viewtopic.php?pid=7556#p7556
Воспроизвести этот пример на Python у меня не получилось, та же петрушка - ошибок нет, но ничего не происходит. Может, у тебя получится…
Я только недавно с СОМ-объектами начал разбираться. Я пока не волшебник.
Однако метод с htmlfile кажется дико неспортивным. Особенно этот цикл со Sleep. Это как говорится – дурно пахнет. Переписать на питоне – вроде бы можно.
Надо копать MSDN, только у меня нет спортивного интереса.
dvs
Может вот это http://www.speech.kth.se/snack/ поможет?
poltergeist
Короче вот: http://pymedia.org/
проверял - всё пашет. Ну вы тут и намудрили%)
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 открывает почти мгновенно, всё работает.
well
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

Лишние кавычки :)
The gray Cardinal
well
Лишние кавычки
Ты хочешь сказать, у тебя это работает? У меня - нет, playState всегда 9. А кавычки появились в результате диких попыток добиться работы. Не работает ни с кавычками, ни без.
ActivePython 2.5, WinXP SP2.
well
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-ка. Интересно, почему такое может быть?
The gray Cardinal
При enableErrorDialogs=True у меня не выбрасывает никаких окон, ни с кавычками, ни без. И не работает ни из-под SciTE, ни при “прямом” запуске - всегда бесконечно идёт девятка. При запуске из-под Pythonwin последний просто виснет намертво. Работает только при пошаговом исполнении в отладчике Pythonwin (что вообще не понятно).
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