Skip to content

Instantly share code, notes, and snippets.

@0xBADC0FFEE
Forked from tmehlinger/run.sh
Last active October 9, 2018 12:14
Show Gist options
  • Save 0xBADC0FFEE/fe9e035d753c7f492523c9e598f56a1d to your computer and use it in GitHub Desktop.
Save 0xBADC0FFEE/fe9e035d753c7f492523c9e598f56a1d 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 uri=udp://0.0.0.0: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 uri=udp://0.0.0.0: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. \
mp4mux name=mux faststart=true streamable=true ! filesink sync=false location=/videos/asdf.mp4
// 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);
});
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment