Как я могу слушать в сокете и воспроизводить видеофайл с помощью omxplayer параллельно? - PullRequest
0 голосов
/ 18 мая 2019

Я пытаюсь воспроизвести видео в цикле, используя omxplayer на raspberry pi.Пока видео зацикливается, я хочу, чтобы сокет прослушивал команду / данные из другого источника (tcp).После получения команды / данных я бы хотел, чтобы скрипт python omxplayer вышел из цикла и продолжил работу с программой python.

До сих пор я пытался создать цикл в открытом сокете прослушивания,и как только команда / данные получены, прервите цикл, установив флаг, но это не работает.Я полагаю, что я должен использовать asyncio и async, ожидаю, чтобы это заработало ...

def interactive(player):
    # INTERACTIVE SCENES        
    player.load(VIDEO_PATH_LOOP)
    player.mute()

    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        s.bind((LISTENER_HOST, LISTENER_PORT))
        s.listen()

        conn, addr = s.accept()
        with conn:
            flag = 0
            # LOOP 
            while(flag == 0):
                data = conn.recv(1024)                
                if not data:
                    continue

                conn.sendall(data)
                print("data is: " + data.decode())

                if data:
                    flag = 1

                time.sleep(20)
                player.set_position(0)  

                s.listen()
                conn, addr = s.accept()
    print("out of listen mode")

Я получаю действительно странные результаты, когда посылаю строку в гнездо для прослушивания ... В идеале, видео цикл будет непрерывноиграть до тех пор, пока не будет получена конкретная строка, тогда сценарий будет двигаться дальше.

...