Skip to content

Instantly share code, notes, and snippets.

@tmehlinger
Last active February 21, 2023 12:02
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save tmehlinger/dfc18668745399eb1ad91c34d48527b5 to your computer and use it in GitHub Desktop.
Save tmehlinger/dfc18668745399eb1ad91c34d48527b5 to your computer and use it in GitHub Desktop.
gstreamer RTP to RTMP
#!/bin/bash
# tested on Ubuntu 16.04
apt-get install -y \
gstreamer1.0-libav \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-tools
# start gstreamer... assumes you have mediasoup configured to use Opus/H264
gst-launch-1.0 -em \
rtpbin name=rtpbin latency=5 \
udpsrc port=10000 caps="application/x-rtp,media=(string)audio,clock-rate=(int)48000,encoding-name=(string)OPUS" ! rtpbin.recv_rtp_sink_0 \
rtpbin. ! queue ! rtpopusdepay ! opusdec ! audioconvert ! audioresample ! voaacenc ! mux. \
udpsrc port=10002 caps="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264" ! rtpbin.recv_rtp_sink_1 \
rtpbin. ! queue ! rtph264depay ! h264parse ! mux. \
flvmux name=mux streamable=true ! rtmpsink sync=false location=rtmp://127.0.0.1:1935/stream
// snippet from the mediasoup server that actually sets up the `RtpStreamer`
room.on('newpeer', (peer) => {
peer.on('newproducer', (producer) => {
let rtpParams = {
remoteIP: '127.0.0.1',
remotePort: (producer.kind === 'audio') ? 10000 : 10002
}
room.createRtpStreamer(producer, rtpParams).then((streamer) => {
console.log('started mirroring RTP for', producer.kind);
});
});
});
@tmehlinger
Copy link
Author

Ha! I realized it just as you posted. You are correct, fixed now.

@klanjabrik
Copy link

@tmehlinger do you know how to solved: WARNING: erroneous pipeline: no element "voaacenc"?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment