Я пытаюсь записать поток из файла m3u8. Этот конвейер работает:gst-launch-0.10 -e souphttpsrc location=(mysrc.m3u8) ! queue ! hlsdemux ! queue ! mpegtsparse ! queue ! mpegtsdemux ! queue ! audio/mpeg ! queue ! filesink location=test.ts
и (иногда) записывает аудиопоток.
Но я не могу записывать видео, что бы я ни делал, происходит сбой.
Я пробовал что-то вроде этого:gst-launch-0.10 souphttpsrc location=(mysrc.m3u8) ! queue ! hlsdemux ! queue ! mpegtsparse ! queue ! mpegtsdemux ! queue ! video/x-264 ! queue ! filesink location=test.ts
< br> Но это ничего не делает.
gstreamer записывает поток m3u8
Ответы (1)
Вы используете gstreamer 0.10, который устарел и не поддерживается, всем пользователям следует выполнить обновление до серии 1.x.
Учитывая это предупреждение, неясно, хотите ли вы сохранить поток mpegts или потоки внутри него.
Чтобы сохранить поток mpegts, вы можете просто сделать:
gst-launch-1.0 http://path/to/your/stream.m3u8 ! hlsdemux ! filesink
Имейте в виду, что если список воспроизведения HLS содержит несколько битрейтов, hlsdemux может переключить битрейт, и это не удастся, поскольку gst-launch-1.0 не может с этим справиться. (это инструмент отладки и тестирования). Вероятно, вы можете установить фиксированную «скорость соединения», чтобы всегда использовать тот же битрейт, который вы хотите, чтобы решить эту проблему.
Если вы хотите получить только видеопоток и знаете, что это H264, попробуйте:
gst-launch-1.0 http://path/to/your/stream.m3u8 ! hlsdemux ! tsdemux ! queue ! video/x-h264 ! filesink
Возможно, было бы лучше сохранить его в формате контейнера, чтобы его было легче использовать позже, с чем-то вроде:
gst-launch-1.0 http://path/to/your/stream.m3u8 ! hlsdemux ! tsdemux ! queue ! video/x-h264 ! h264parse ! qtmux ! filesink
Но, как я уже сказал, пожалуйста, переходите на 1.x, HLS намного лучше в 1.x, чем в 0.10, и он должен работать.