Задать вопрос
@1099511627776
Пишу все что интересно и на всем на чем интересно

Почему vlc на pygtk не переключается на следующий трек?

Здравствуйте, пишу небольшой плеер на python с использованием бинднига pygtk к libvlc.

Есть задание при окончании трека брать следуюший ил контроллера (функция GetNextTrack) и проигрывать его.

Через event_manager биндинга записываю следующий колбек:
def next_track(self,sender):
		fname = vlc_controller.GetNextTrack()['url']
		self.vlc.player.set_media(instance.media_new(fname,'--network-caching 60000'))
		self.vlc.player.play()


Но по окончании текущего трека этот код вешается на вызове функции: player.set_media

И соответственно не проигрывается.


Также пробовал на qtvlc примере. тоже самое.


Подскажите в какую сторону копать?
  • Вопрос задан
  • 3650 просмотров
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 4
subvillion
@subvillion
Вы из libvlc вызываете libvlc от этого у него ломается мозг. Это баг.
Ответ написан
@1099511627776 Автор вопроса
Пишу все что интересно и на всем на чем интересно
Хорошо, допустимю Тогда я пробую сейчас удалить компонент в окне которого libvlc выводится:
	def endCallback(self,event):
		sys.stdout.write('\n\r endCallback')
		sys.stdout.flush()
		self._mainbox.remove(self.vlc)
		self.vlc = None
		self.vlc = DecoratedVLCWidget()
		sys.stdout.write('\n\r recreatePlayer')
		sys.stdout.flush()
		fname = vlc_controller.GetNextTrack()['url']
		self.vlc.player.set_media(instance.media_new(fname,'--network-caching 60000'))
		sys.stdout.write('\n\r after set_media')
		sys.stdout.flush()		
		self.vlc.player.play()
		sys.stdout.write('\n\r afterplay')
		sys.stdout.flush()		


виснет на self._mainbox.remove(self.vlc) т.е. на удалении виджета из формы на место которого я планировал поставить новый екземпляр
Ответ написан
Комментировать
@1099511627776 Автор вопроса
Пишу все что интересно и на всем на чем интересно
Блин, даже разработчики согласились что это косяк
forum.videolan.org/viewtopic.php?f=32&t=108750#p368299
А фраза «patch welcome» — порадовала
Ответ написан
Комментировать
@1099511627776 Автор вопроса
Пишу все что интересно и на всем на чем интересно
Покачто сделал workaround через vlc.py MediaPlayerList.
После окончания проигрывания я додаю следующий трек в список. Но есть косяки.
1. Первый файл в плейлисти проигрывается 2 раза
2. При удалении файла из списка всеравно подвешивается плеер
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы