gstreamer записывает поток m3u8

Я пытаюсь записать поток из файла 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> Но это ничего не делает.


person user3921796    schedule 08.08.2014    source источник


Ответы (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, и он должен работать.

person thiagoss    schedule 09.08.2014
comment
Мне нужно получить видео и аудио отдельно, в разные файлы, но сейчас я сосредоточен на том, чтобы получить все, что будет работать. Я пытаюсь использовать gst-launch-1.0 path/to/your/stream.m3u8! хлсдемукс ! filesink, но когда я пытаюсь воспроизвести его с vlc, он вылетает примерно через 1 секунду. Может быть, это потому, что в файле h3u8 на самом деле несколько битрейтов. Я не знаю, как использовать скорость соединения - person user3921796; 11.08.2014
comment
скорость соединения устанавливается так же, как и любое другое свойство. свойство hlsdemux=значение. Проверьте gst-inspect-1.0 hlsdemux на наличие доступных и описаний. - person thiagoss; 12.08.2014