История изменений
Исправление noname_user, (текущая версия) :
Нет, если поток будет в ожидании получения ссылки, то vlc по идее ее еще не получал и не может быть остановлен, а получит он ее тогда, когда api ее вернет, так вот я решил это с помощью эвентов самого vlc:
import vlc
import requests
from PyQt5 import QtCore
class Streamer():
global flag
flag = 0
def __init__(self, *data):
self.vlcInstance = vlc.Instance("--no-xlib --verbose 2")
self.player = self.vlcInstance.media_player_new()
event_manager = self.player.event_manager() # Attach event to player (next 3 lines)
event=vlc.EventType()
event_manager.event_attach(event.MediaPlayerStopped, self.end_reached)
def end_reached(self):
global flag
flag = 1
print("End reached!")
def stop(self):
self.player.stop()
return
def pause(self):
pass
def get_position(self):
return self.player.get_position()
def play(self, uri):
print('play')
m=self.vlcInstance.media_new(uri)
self.player.set_media(m)
m.release()
self.player.play()
while flag == 1: # Wait until the end of the first media has been reached...
self.quit()
return
З.Ы. код с коленки, не обращайте внимание, только что набросал его
Исходная версия noname_user, :
Нет, если поток будет в ожидании получения ссылки, то vlc по идее ее еще не получал и не может быть остановлен, а получит он ее тогда, когда api ее вернет, так вот я решил это с помощью эвентов самого vlc:
import vlc
import requests
from PyQt5 import QtCore
class Streamer():
global flag
flag = 0
def __init__(self, *data):
self.vlcInstance = vlc.Instance("--no-xlib --verbose 2")
self.player = self.vlcInstance.media_player_new()
event_manager = self.player.event_manager() # Attach event to player (next 3 lines)
event=vlc.EventType()
event_manager.event_attach(event.MediaPlayerStopped, self.end_reached)
def end_reached(self):
global flag
flag = 1
print("End reached!")
def stop(self):
self.player.stop()
return
def pause(self):
pass
def get_position(self):
return self.player.get_position()
def play(self, uri):
print('play')
m=self.vlcInstance.media_new(uri)
self.player.set_media(m)
m.release()
self.player.play()
while flag == 1: # Wait until the end of the first media has been reached...
self.quit()
return