Я пытаюсь загрузить удаленный источник 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 загружался и мультиплексировался настолько быстро, насколько это позволяет сеть?