2014-09-15 2 views
6

Мне нужно получить видеопоток с камеры через RTSP и сохранить его в файл. Все это нужно сделать через gstreamer.Как сохранить видеопоток RTSP в файл MP4 через gstreamer?

После некоторого поиска Google, я попытался следующие:

gst-launch-1.0 rtspsrc location=rtsp://192.168.1.184/live2.sdp ! queue ! rtph264depay ! avdec_h264 ! mp4mux ! filesink location=result3.mp4 

, но он дает ошибку: "Ошибочное трубопровод: не мог связать avdec_h264-0 с mp4mux0"

gst-launch-1.0 rtspsrc location=rtsp://192.168.1.184/live2.sdp ! queue ! rtph264depay ! h264parse ! mp4mux ! filesink location=result3.mp4 

Он начинается выполняя работу, но файл результатов не воспроизводится через VLC.

Какая правильная команда? И если вы выберете h264parse и avdec_h264, не могли бы вы объяснить, почему?

+2

@ downvote: Я не вижу ничего плохого в этом вопросе, кроме названия. @Juster: 1) вы можете попробовать его без 'h264parse' вообще. 2) работает ли вообще поток? –

ответ

6

Вторая команда выглядит правильно. Сырые видеоданные h264 немного сложны, потому что они имеют две характеристики - «выравнивание» и «поток-формат», которые могут различаться. h264parse может преобразовывать данные h264 в форму, необходимую для разных связанных с h264 элементов GStreamer.

avdec_h264 - элемент декодера. Вы не хотите декодировать данные, поскольку вы, по-видимому, не показываете их. Вы помещаете кодированные данные h264 из потока RTSP в файл контейнера mp4.

Если файл не воспроизводится, вы должны проверить, что поток хорош, или попробуйте другие медиаплееры и посмотрите, работают ли они (mplayer, Media Player, Quicktime, что угодно).

Вы также можете попробовать muxing в файл контейнера matroska, используя элемент «matroskamux».

+0

Я пробовал matroska и tsmux, те работы – Juster

10

Вам нужно добавить флаг -e (конец потока), чтобы mp4mux мог завершить файл, иначе вы получите поврежденный неиграемый файл.

gst-launch -e rtspsrc location=url ! decodebin ! x264enc ! mp4mux ! filesink location=file.mp4 
+0

В моем случае эта команда сделала воспроизводимый файл, но все кадры выглядели как первый кадр. Как будто видео замораживается. – alexolut

+0

Кажется, это ошибка в [vlc] (https://trac.videolan.org/vlc/ticket/17528). – alexolut

Смежные вопросы