#python #sockets
#python #сокеты
Вопрос:
Я пытаюсь отправить mp3-файлы в VLC (с помощью которого я открываю #vlc http://localhost:8080
). Но помимо фактической отправки mp3 по сети, я не знаю, как на самом деле получить воспроизведение файла.
Вот как я это делаю на данный момент:
Настройка сокетов
PVTPORT = 1111
PVTSOCK = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
PVTSOCK.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
PVTSOCK.bind(("localhost", PVTPORT))
VLCSOCK = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
VLCSOCK.bind(("", 8080))
VLCSOCK.listen(5)
Клиентская сторона, отправка данных файла в PVTSOCK
def send():
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
sock.connect(("localhost", 1111))
f = open(path, "rb")
ff = f.read(1024)
while ff:
sock.send(ff)
ff = f.read(1024)
Сервер, принимающий данные из PVTPORT и перенаправляющий их в VLC
ready = select.select([BCSOCK, PVTSOCK, VLCSOCK, sys.stdin], [], [], 1)
for r in ready[0]:
if r is VLCSOCK:
PlayData = ""
newsock, addr = VLCSOCK.accept()
while 1:
data = newsock.recv(1024)
PlayData = data
if not data: break
newsock.send("HTTP/1.0 200 OKrn")
newsock.send("Content-Type:audio/mp3rn")
newsock.send("rn")
newsock.send(PlayData)
newsock.close()
if r is PVTSOCK:
pvtdata, pvtaddr = PVTSOCK.recvfrom(1024)
PVTSOCK.connect(("", p))
PVTSOCK.send(pvtdata)