#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?