Gstreamer souphttpsrc to rtp h263 закодированный поток - PullRequest
2 голосов
/ 22 февраля 2011

Я пытаюсь создать конвейер для потоковой передачи потока JPEG в кодированный поток h263 через RTP.Когда я выполняю:

gst-launch -v \
    souphttpsrc \
        location=http://192.168.1.54:8080 \
        do-timestamp=true \
    ! multipartdemux ! image/jpeg,width=352,height=288 \
    ! ffmpegcolorspace ! video/x-raw-yuv,framerate=15/1 \
    ! videoscale \
    ! ffenc_h263 ! rtph263pay \
    ! udpsink host=192.168.1.31 port=1234

gstreamer сообщает:

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstCapsFilter:capsfilter2: caps = image/jpeg, width=(int)352, height=(int)288
ERROR: from element /GstPipeline:pipeline0/GstSoupHTTPSrc:souphttpsrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2507): gst_base_src_loop (): /GstPipeline:pipeline0/GstSoupHTTPSrc:souphttpsrc0:
streaming task paused, reason not-linked (-1)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
/GstPipeline:pipeline0/GstMultipartDemux:multipartdemux0.GstPad:src_0: caps = NULL
Freeing pipeline ...

Я проверил, что элементы существуют.Я запустил gst-inspect для ffenc_h263, ffmpegcolorspace и остальных элементов этой команды.gst-inspect не сообщает об ошибке.Я что-то упускаю?

1 Ответ

2 голосов
/ 28 февраля 2011
  1. Вам нужно jpegdec после multipartdemux для декодирования потока JPEG в необработанное видео.
  2. Вам не нужно ffmpegcolorspace, потому что jpegdec конвертируется в video/x-raw-yuv.
  3. videoscale здесь бесполезен, потому что вы не указываете ширину / высоту для исходящего потока.

Попробуйте это:

gst-launch -v \
    souphttpsrc \
        location=http://192.168.1.54:8080 \
        do-timestamp=true \
    ! multipartdemux \
    ! image/jpeg,width=352,height=288,framerate=15/1 \
    ! jpegdec ! ffenc_h263 ! rtph263pay \
    ! udpsink host=192.168.1.31 port=1234
...