Как отправить кадры MJPEG по RTSP - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь изменить текущий конвейер GStreamer

appsrc name=source caps=video/x-raw, format=BGR,width=640,height=480,framerate=30/1 ! videoconvert ! x264enc speed-preset=ultrafast tune=zerolatency ! rtph264pay config-interval=1 name=pay0 pt=96

, который я использую на моем python RTSP-сервере, чтобы использовать MJPEG вместо x264.

В частности Так как я прочитал здесь , что avenc_mjpeg - кодер с лучшими характеристиками, я решил использовать его. Первым делом я попытался заменить x264en c и его параметры на avenc_mjpeg.

С другой стороны, в команде, которую я использую для чтения потока (с терминала, на данный момент)

gst-launch-1.0 rtsprc location=127.0.0.1:8554/test is-live=true ! rtph264depay ! h264parse ! avdec_264 ! videoconvert ! videoscale ! autovideosink

Я пытался удалить h264parse и заменить avdec_264 на avdec_mjpeg.

Но это не работает.

Здесь код, который я использовал для вдохновения разработать мой RTSP сервер

Я не специалист по конвейерам GStreamer.

Любая помощь приветствуется

1 Ответ

0 голосов
/ 10 апреля 2020

MJPEG - это в основном серия изображений JPEG. Таким образом, вы можете конвертировать кадры в JPEG и передавать их.

В вашем случае:

appsrc name=source caps=video/x-raw, format=BGR,width=640,height=480,framerate=30/1 ! videoconvert ! jpegenc ! rtpjpegpay name=pay0 pt=96

А для принимающей стороны:

gst-launch-1.0 rtsprc location=127.0.0.1:8554/test is-live=true ! rtpjpegdepay ! jpegdec ! videoconvert ! videoscale ! autovideosink
...