Skip to content

Instantly share code, notes, and snippets.

@ross-newman
Last active April 27, 2020 02:00
Show Gist options
  • Save ross-newman/a74e1373626be21d31fe2326610569be to your computer and use it in GitHub Desktop.
Save ross-newman/a74e1373626be21d31fe2326610569be to your computer and use it in GitHub Desktop.
#!/bin/bash
REMOTE_IP=192.168.0.123
echo "Staring stream..."
gst-launch-1.0 rtspsrc location="rtsp://${REMOTE_IP}:554/h264?username=admin&password=123456" ! \
rtph264depay ! \
h264parse ! \
avdec_h264 ! \
videoconvert ! \
xvimagesink sync=true
echo "Done..."
#!/usr/bin/python
# -*- coding: utf-8 -*-
# sudo apt-get install python-gst-1.0 gir1.2-gst-rtsp-server-1.0
import gi
gi.require_version('Gst','1.0')
gi.require_version('GstRtspServer','1.0')
from gi.repository import Gst, GObject, GstRtspServer
GObject.threads_init()
Gst.init(None)
class RTSP_Server:
def __init__(self):
self.server = GstRtspServer.RTSPServer.new()
self.address = "127.0.0.1"
self.port = "554"
self.server.set_address(self.address)
self.server.set_service(self.port)
# Setup callback
self.server.connect("client-connected",self.client_connected)
self.factory = GstRtspServer.RTSPMediaFactory().new()
self.factory.set_launch(( \
'v4l2src device=/dev/video0 ! video/x-h264,width=640,height=480,framerate=30/1 ! ' \
'h264parse ! ' \
'queue ! ' \
'rtph264pay name=pay0 pt=96 ' \
))
# allow multiple connections
self.factory.set_shared(True)
self.factory.set_transport_mode(GstRtspServer.RTSPTransportMode.PLAY)
self.mounts = self.server.get_mount_points()
self.mounts.add_factory('/live', self.factory)
self.server.attach(None)
# Output hint
port = self.server.get_bound_port()
print "Streaming on rtsp://" + str(self.address) + ":" + str(port) + "/h264"
GObject.MainLoop().run()
print "Done."
def client_connected(self, arg1, arg2):
print('Client connected')
server = RTSP_Server()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment