Python GStreamer ищет воспроизведение аудио https с перерывами

#python #https #stream #gstreamer #seek

Вопрос:

Вот первая часть сценария :

 import os, gi, time
from threading import Thread
gi.require_version('Gst', '1.0')
from gi.repository import Gst, GLib

Gst.init()

main_loop = GLib.MainLoop()
thread = Thread(target=main_loop.run)
thread.start()

url = os.popen(f"youtube-dl --format m4a --get-url https://www.youtube.com/watch?v=ndl1W4ltcmg").read()
 

После этого я мог бы использовать souphttpsrc :

 player = Gst.parse_launch(f"souphttpsrc is-live=false location={url} ! decodebin ! audioconvert ! autoaudiosink")
 

или играть в игры. :

 player = Gst.parse_launch(f"playbin uri={url}")
 

и запустите его, а затем подождите немного :

 player.set_state(Gst.State.PLAYING)
time.sleep(1)
 

В конце концов я попытался искать во ВРЕМЕНИ :

 player.seek_simple(Gst.Format.TIME,  Gst.SeekFlags.FLUSH | Gst.SeekFlags.KEY_UNIT, 20 * Gst.SECOND)
 

или в БАЙТАХ :

 player.seek_simple(Gst.Format.BYTES,  Gst.SeekFlags.FLUSH | Gst.SeekFlags.KEY_UNIT, 120000)
 

Вот конец сценария :

 try:
    while True:
        time.sleep(0.1)
except KeyboardInterrupt:
    pass

player.set_state(Gst.State.NULL)
main_loop.quit()
 

Оба вернули значение True, но со ВРЕМЕНЕМ воспроизведение мгновенно прекратилось (состояние также стало ПРИОСТАНОВЛЕННЫМ, но возврат к ВОСПРОИЗВЕДЕНИЮ не помог). Однако это могло быть связано с этой проблемой.

Вот почему я попробовал БАЙТЫ, которые продолжали воспроизведение после поиска до 120000, но вскоре прекратились (около 180000 байт), состояние здесь оставалось ВОСПРОИЗВОДИМЫМ, но звука тоже не было.

Есть ли какой — либо способ поиска потокового аудио с помощью GStreamer?