Быстрое мультиплексирование удаленного HLS с помощью GStreamer - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь загрузить удаленный источник HLS в локальный файл MKV. Конвейер работает хорошо, но кажется, что загрузка идет очень медленно (без кодирования, только повторное мультиплексирование). Я ожидал, что процесс будет таким же быстрым, как скорость сети, но это не так. Похоже, GStreamer проигрывает плейлист HLS, как будто это живой плейлист, хотя это не так. Список воспроизведения закрыт, и это не прямой поток.

Я использую souphttpsrc в качестве SR C и filesink с локальным путем в качестве вывода. Кроме того, при запуске конвейера я вижу в консоли следующие строки:

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Got context from element 'souphttpsrc0': gst.soup.session=context, session=(SoupSession)NULL, force=(boolean)false;
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock

Я думаю, что GstSystemClock имеет какое-то отношение к нему (?)

Это полный конвейер Я использую:

gst-launch-1.0 -e matroskamux name=mux ! filesink location=x.mkv souphttpsrc 
location="https://path/to/index.m3u8" ! queue2 max-size-bytes=1000000000 ! 
tee name=t t. ! queue max-size-bytes=1000000000 ! hlsdemux ! tsdemux ! audio/mpeg ! 
aacparse ! mux. t. ! queue max-size-bytes=1000000000 ! hlsdemux ! tsdemux ! 
video/x-h264 ! h264parse ! mux.

Как сделать так, чтобы GStreamer загружался и мультиплексировался настолько быстро, насколько это позволяет сеть?

...