我想在发件人和收件人之间传输RTP视频。如果我使用以下命令通过UDP流式传输视频,它可以正常工作:
SENDER
gst-launch-1.0 -e v4l2src device=/dev/v4l/by-id/usb-AVEO_Technology_Corp._USB2.0_Camera-video-index0 ! jpegenc ! rtpstreampay ! udpsink host=172.17.30.78 port=5200
RECEIVER
gst-launch-1.0 udpsrc port=5200 ! application/x-rtp, encoding-name=JPEG,payload=26 ! rtpjpegdepay ! jpegdec ! autovideosink
但是当我尝试将视频保存到文件
时gst-launch-1.0 -e v4l2src device=/dev/v4l/by-id/usb-AVEO_Technology_Corp._USB2.0_Camera-video-index0 ! jpegenc ! rtpjpegpay ! filesink location=test
然后使用这些命令通过UDP发送
SENDER
gst-launch-1.0 filesrc location=test ! udpsink host=172.17.30.78 port=5200
RECEIVER
gst-launch-1.0 udpsrc port=5200 ! application/x-rtp, encoding-name=JPEG,payload=26 ! rtpjpegdepay ! jpegdec ! autovideosink
接收方无法解码流并显示此错误
AVERTISSEMENT : de l’élément /GstPipeline:pipeline0/GstRtpJPEGDepay:rtpjpegdepay0 : Impossible de décoder le flux.
Information de débogage supplémentaire :
gstrtpbasedepayload.c(492): gst_rtp_base_depayload_handle_buffer (): /GstPipeline:pipeline0/GstRtpJPEGDepay:rtpjpegdepay0:
Received invalid RTP payload, dropping
答案 0 :(得分:0)
保存到文件时有一个区别。当UDP发送数据包时,文件是连续的数据流,每个数据包都有大小信息。此大小信息有助于识别逻辑上可解码的元素的边界。保存到文件后,此信息会丢失。