LINUX.ORG.RU

[gstreamer][rtp RAW] не принимается


0

1

Способ отправки 1:

gst-launch -v rtspsrc location=rtsp://user:pass@10.10.10.12/axis-media/media.amp ! rtph264depay ! decodebin ! rtpvrawpay ssrc=1 timestamp-offset=0 seqnum-offset=0 ! udpsink async=false sync=false host=127.0.0.1 port=8812 | while read line ; do
  if [[ $line =~ .*GstUDPSink.*caps.*video.* ]]
  then
     echo $line | sed -e 's/.*caps = //' | sed -e 's/ //g' > caps_12.txt
     break
  fi
  #echo $line
done

Способ получения 1:

gst-launch -v udpsrc do-timestamp=true multicast-group=127.0.0.1 port=8812 caps="$CAPS" ! rtpvrawdepay ! queue ! videoscale ! 'video/x-raw-yuv,width=320,height=240' ! clockoverlay halignment=1 text="`date +%d.%m.%y`" font-desc="Sans 28" ! ffenc_flv ! ffmux_flv ! filesink async=false sync=false location=$FDIR/$FFNAME

Трафик бегает, но вот файлы с видео пустые.

Способ отправки 2:

gst-launch -v gstrtpbin name=rtpbin \
        rtspsrc location=rtsp://user:pass@10.10.10.12/axis-media/media.amp ! rtph264depay ! decodebin ! rtpvrawpay ! rtpbin.send_rtp_sink_0 \
                  rtpbin.send_rtp_src_0 ! udpsink host=127.0.0.1 port=5000                            \
                  rtpbin.send_rtcp_src_0 ! udpsink host=127.0.0.1 port=5001 sync=false async=false    \
                  udpsrc multicast-group=127.0.0.1 port=5005 ! rtpbin.recv_rtcp_sink_0 | while read line ; do
  if [[ $line =~ .*GstUDPSink.*caps.*video.* ]]
  then
     echo $line | sed -e 's/.*caps = //' | sed -e 's/ //g' > caps_12.txt
     break
  fi
  echo $line
done

Способ получения 2:

gst-launch -v gstrtpbin name=rtpbin \
    udpsrc caps=$CAPS \
            multicast-group=127.0.0.1 port=5000 ! rtpbin.recv_rtp_sink_0 \
     rtpbin. ! rtpvrawdepay ! queue ! videoscale ! 'video/x-raw-yuv,width=320,height=240' ! clockoverlay halignment=1 text="`date +%d.%m.%y`" font-desc="Sans 28" ! ffenc_flv ! ffmux_flv ! filesink location=$FDIR/$FFNAME \
     udpsrc multicast-group=127.0.0.1 port=5001 ! rtpbin.recv_rtcp_sink_0                               \
     rtpbin.send_rtcp_src_0 ! udpsink host=127.0.0.1 port=5005 sync=false async=false

Отказывается получать.

ОШИБКА: из элемента /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: Внутренняя ошибка передачи данных.
Дополнительная отладочная информация:
gstbasesrc.c(2550): gst_base_src_loop (): /GstPipeline:pipeline0/GstUDPSrc:udpsrc0:
streaming task paused, reason not-linked (-1)
Execution ended after 7053962 ns.

Пока я в тупике...

Ответ на: комментарий от alabalaev

Еще интересное наблюдение: если передать кривые капсы (размер фрейма больше реального), то все начинает ходить, но картинка, понятное дело, битая.

alabalaev ()

Поборол

sender:

 gst-launch -v gstrtpbin name=r \ rtspsrc location=rtsp://user:pass@10.10.10.11/axis-media/media.amp ! rtph264depay ! decodebin ! \ ffmpegcolorspace ! \ videoscale ! 'video/x-raw-yuv,format=(fourcc)I420,width=320,height=240' \ ! rtpvrawpay ! r.send_rtp_sink_0 \ r.send_rtp_src_0 ! udpsink host=127.0.0.1 port=5000 \ r.send_rtcp_src_0 ! udpsink host=127.0.0.1 port=5001 sync=false async=false \ udpsrc port=5002 ! r.recv_rtcp_sink_0 | while read line ; do if [[ $line =~ .*GstUDPSink.*caps.*video.* ]] then echo $line | sed -e 's/.*caps = //' | sed -e 's/ //g' > caps_11.txt fi echo $line done 

receiver:

 gst-launch gstrtpbin name=rtpbin \ udpsrc caps=$CAPS port=5000 ! rtpbin.recv_rtp_sink_0 \ rtpbin. ! rtpvrawdepay ! \ clockoverlay halignment=1 text="`date +%d.%m.%y`" font-desc="Sans 28" ! \ ffenc_flv ! ffmux_flv ! filesink async=false sync=false location=$FDIR/$FFNAME \ udpsrc port=5001 ! rtpbin.recv_rtcp_sink_0 \ rtpbin.send_rtcp_src_0 ! udpsink port=5002 sync=false async=false 

причем, только когда добавил в сендера format=(fourcc)I420, иначе не ходило...

alabalaev ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.