Notes:
Shell variables and pipelines | |
---|---|
Playback machine (receiver) | # On playback machine, set either IMX2PC or PC2IMX variables, then run the pipeline ## IMX2PC: Case where PC does the playback AUDIO_DEC_SINK="rtpamrdepay ! amrnbdec ! alsasink " VIDEO_CAPS="\"application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H263-1998\"" VIDEO_DEC_SINK="rtph263pdepay ! ffdec_h263 ! autovideosink" ## End of IMX2PC Settings ## PC2IMX: Case where iMX does the playback AUDIO_DEC_SINK="rtpamrdepay ! mfw_amrdecoder ! alsasink " VIDEO_CAPS="\"application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H263-1998\"" VIDEO_DEC_SINK="rtph263pdepay ! vpudec ! mfw_v4lsink " ## End of PC2IMX Settings PLAYBACK_AUDIO="udpsrc caps=\"application/x-rtp,media=(string)audio,clock-rate=(int)8000,encoding-name=(string)AMR,encoding-params=(string)1,octet-align=(string)1\" \ port=5002 ! rtpbin.recv_rtp_sink_1 \ rtpbin. ! $AUDIO_DEC_SINK \ udpsrc port=5003 ! rtpbin.recv_rtcp_sink_1 \ rtpbin.send_rtcp_src_1 ! udpsink port=5007 sync=false async=false" PLAYBACK_VIDEO="udpsrc caps=$VIDEO_CAPS port=5000 ! rtpbin.recv_rtp_sink_0 \ rtpbin. ! $VIDEO_DEC_SINK \ udpsrc port=5001 ! rtpbin.recv_rtcp_sink_0 \ rtpbin.send_rtcp_src_0 ! udpsink port=5005 sync=false async=false" PLAYBACK_AV="$PLAYBACK_VIDEO $PLAYBACK_AUDIO" # Playback pipeline gst-launch -v gstrtpbin name=rtpbin $PLAYBACK_AV |
Streaming Machine (sender) | # On Streaming machine, set either IMX2PC or PC2IMX variables, then run the pipeline ## IMX2PC: Case where iMX does the streaming IP=x.x.x.x # IP address of the playback machine VIDEO_SRC="mfw_v4lsrc" VIDEO_ENC="vpuenc codec=h263 ! rtph263ppay " AUDIO_ENC="audiotestsrc ! amrnbenc ! rtpamrpay " ## END IMX2PC settings ## PC2IMX: Case where PC does the streaming IP=y.y.y.y # IP address of the playback machine VIDEO_SRC="v4l2src" VIDEO_ENC="ffenc_h263 ! rtph263ppay " AUDIO_ENC="audiotestsrc ! amrnbenc ! rtpamrpay " # END PC2PC settings STREAM_AUDIO="$AUDIO_ENC ! rtpbin.send_rtp_sink_1 \ rtpbin.send_rtp_src_1 ! udpsink host=$IP port=5002 \ rtpbin.send_rtcp_src_1 ! udpsink host=$IP port=5003 sync=false async=false \ udpsrc port=5007 ! rtpbin.recv_rtcp_sink_1" STREAM_VIDEO="$VIDEO_SRC ! $VIDEO_ENC ! rtpbin.send_rtp_sink_0 \ rtpbin.send_rtp_src_0 ! queue ! udpsink host=$IP port=5000 \ rtpbin.send_rtcp_src_0 ! udpsink host=$IP port=5001 sync=false async=false \ udpsrc port=5005 ! rtpbin.recv_rtcp_sink_0" STREAM_AV="$STREAM_VIDEO $STREAM_AUDIO" # Stream pipeline gst-launch -v gstrtpbin name=rtpbin $STREAM_AV |
What version of the BSP was this tested on ? I get a "no element name gstrtpbin" error when using the im6 as as receiver. BSP 4.1.0
You need to include that element, which is inside the gst-plugin-good plugin.
See RTP Streaming using gstreamer fails - gstrtpbin element missing . Appears to have been some form of conflict
Anyone having any luck in getting the PC-to-iMX streaming to work ? I'm getting about 0.8 fps with the 4.1.0 BSP
What would be the recommended way to drop frame rate by half, or scale from 1080 to 720 before encoding? Preferably, an approach which leverages hardware accelerators.
Hi Leonardo,
I am trying to use above gstreamer commands with imx6 and I am getting this error - erroneous pipeline: no element "amrnbenc"
I am using Yocto 1.6. Can you tell me how to fix this ?
Hi,
I want to build the iMX-to-Android phone RTP streaming video transmission based on UDP protocol. Have you tried this? Some advise ?
Thanks !
Keerecles