def __init__(self, port, bitrate, framerate, path, videos): """ **On init:** Some initialization code. :param port: RTSP server port. :type port: string or integer :param bitrate: The bitrate (in kbps). :type bitrate: string or integer :param framerate: The framerate (in fps). :type framerate: string or integer :param string path: Path to the video directory. :param list videos: List of available videos. """ #: The bitrate (in kbps). self.bitrate = bitrate #: The framerate (in fps). self.framerate = framerate #: Path to the video directory. self.path = path #: List of available videos. self.videos = videos #: GStreamer RTSP server instance. self.server = Server() #: Gstreamer loop. self.loop = None self.server.set_service(str(port)) #: List of GStreamer RTSP factories. self.factory = [] self.__addMedia()
def __init__(self, port, bitrate, framerate): """ **On init:** Some initialization code. :param integer port: RTSP server port. :param integer bitrate: Video bitrate. :param integer framerate: Video framerate. """ self.bitrate = bitrate self.framerate = framerate self.server = Server() self.loop = None self.server.set_service(str(port)) self.factory = [] self.__addMedia()
class RTSPserver: """ GStreamer RTSP server. """ def __init__(self, port, bitrate, framerate, path, videos): """ **On init:** Some initialization code. :param port: RTSP server port. :type port: string or integer :param bitrate: The bitrate (in kbps). :type bitrate: string or integer :param framerate: The framerate (in fps). :type framerate: string or integer :param string path: Path to the video directory. :param list videos: List of available videos. """ #: The bitrate (in kbps). self.bitrate = bitrate #: The framerate (in fps). self.framerate = framerate #: Path to the video directory. self.path = path #: List of available videos. self.videos = videos #: GStreamer RTSP server instance. self.server = Server() #: Gstreamer loop. self.loop = None self.server.set_service(str(port)) #: List of GStreamer RTSP factories. self.factory = [] self.__addMedia() def __addMedia(self): """ Add media to server. """ for i, video in enumerate(self.videos): for j in range(0, 4): launch = "filesrc location=" + self.path + "/" + video + " ! decodebin ! videorate ! video/x-raw-yuv,framerate=" + str( self.framerate) + "/1 ! " launch += { 0: "ffenc_h263 bitrate=" + str(self.bitrate) + "000 ! rtph263pay name=pay0", 1: "x264enc bitrate=" + str(self.bitrate) + " ! rtph264pay name=pay0", 2: "ffenc_mpeg4 bitrate=" + str(self.bitrate) + "000 ! rtpmp4vpay name=pay0", 3: "theoraenc bitrate=" + str(self.bitrate) + " ! rtptheorapay name=pay0" }[j] mmap = self.server.get_media_mapping() self.factory.append(MediaFactory()) self.factory[-1].set_launch(launch) self.factory[-1].set_shared(True) self.factory[-1].set_eos_shutdown(True) name = { 0: "/video" + str(i) + ".h263", 1: "/video" + str(i) + ".h264", 2: "/video" + str(i) + ".mpeg4", 3: "/video" + str(i) + ".theora" }[j] mmap.add_factory(name, self.factory[-1]) self.server.set_media_mapping(mmap) def run(self): """ Attach server and run the loop (see :attr:`loop`). """ if self.server.attach(): self.loop = MainLoop() self.loop.run()
git = os.path.join(os.getcwd(), '.git') if os.path.exists(git): sys.path.insert(0, os.getcwd()) from urlparse import urlparse import gobject gobject.threads_init() import pygst pygst.require("0.10") from gst.rtspserver import Server from rtsputils import RelayMediaFactory local_url = sys.argv[1] remote_url = sys.argv[2] server = Server() server.set_service(str(urlparse(local_url).port)) factory = RelayMediaFactory() factory.props.location = remote_url factory.set_shared(True) mapping = server.get_media_mapping() mapping.add_factory("/relay", factory) server.attach() loop = gobject.MainLoop() loop.run()
class RTSPserver: """ GStreamer RTSP server. """ def __init__(self, port, bitrate, framerate, path, videos): """ **On init:** Some initialization code. :param port: RTSP server port. :type port: string or integer :param bitrate: The bitrate (in kbps). :type bitrate: string or integer :param framerate: The framerate (in fps). :type framerate: string or integer :param string path: Path to the video directory. :param list videos: List of available videos. """ #: The bitrate (in kbps). self.bitrate = bitrate #: The framerate (in fps). self.framerate = framerate #: Path to the video directory. self.path = path #: List of available videos. self.videos = videos #: GStreamer RTSP server instance. self.server = Server() #: Gstreamer loop. self.loop = None self.server.set_service(str(port)) #: List of GStreamer RTSP factories. self.factory = [] self.__addMedia() def __addMedia(self): """ Add media to server. """ for i, video in enumerate(self.videos): for j in range(0, 4): launch = "filesrc location="+self.path+"/"+video+" ! decodebin ! videorate ! video/x-raw-yuv,framerate="+str(self.framerate)+"/1 ! " launch += { 0: "ffenc_h263 bitrate="+str(self.bitrate)+"000 ! rtph263pay name=pay0", 1: "x264enc bitrate="+str(self.bitrate)+" ! rtph264pay name=pay0", 2: "ffenc_mpeg4 bitrate="+str(self.bitrate)+"000 ! rtpmp4vpay name=pay0", 3: "theoraenc bitrate="+str(self.bitrate)+" ! rtptheorapay name=pay0" }[j] mmap = self.server.get_media_mapping() self.factory.append(MediaFactory()) self.factory[-1].set_launch(launch) self.factory[-1].set_shared(True) self.factory[-1].set_eos_shutdown(True) name = { 0: "/video"+str(i)+".h263", 1: "/video"+str(i)+".h264", 2: "/video"+str(i)+".mpeg4", 3: "/video"+str(i)+".theora" }[j] mmap.add_factory(name, self.factory[-1]) self.server.set_media_mapping(mmap) def run(self): """ Attach server and run the loop (see :attr:`loop`). """ if self.server.attach(): self.loop = MainLoop() self.loop.run()
import os import sys git = os.path.join(os.getcwd(), '.git') if os.path.exists(git): sys.path.insert(0, os.getcwd()) import gobject gobject.threads_init() import pygst pygst.require("0.10") from gst.rtspserver import Server, MediaMapping, MediaFactory from rtsputils import CamMediaFactory server = Server() server.set_service("8554") factory = CamMediaFactory() factory.props.video = True factory.props.audio = False factory.props.video_width = 320 factory.props.video_height = 240 factory.props.video_codec = "theora" factory.set_shared(True) mapping = server.get_media_mapping() mapping.add_factory("/cam", factory) server.attach()
sys.path.insert(0, os.getcwd()) from urlparse import urlparse import gobject gobject.threads_init() import pygst pygst.require("0.10") from gst.rtspserver import Server from rtsputils import RelayMediaFactory local_url = sys.argv[1] remote_url = sys.argv[2] server = Server() server.set_service(str(urlparse(local_url).port)) factory = RelayMediaFactory() factory.props.location = remote_url factory.set_shared(True) mapping = server.get_media_mapping() mapping.add_factory("/relay", factory) server.attach() loop = gobject.MainLoop() loop.run()
git = os.path.join(os.getcwd(), '.git') if os.path.exists(git): sys.path.insert(0, os.getcwd()) import gobject gobject.threads_init() import pygst pygst.require("0.10") from gst.rtspserver import Server, MediaMapping, MediaFactory from rtsputils import CamMediaFactory server = Server() server.set_service("8554") factory = CamMediaFactory() factory.props.video = True factory.props.audio = False factory.props.video_width = 320 factory.props.video_height = 240 factory.props.video_codec = "theora" factory.set_shared(True) mapping = server.get_media_mapping() mapping.add_factory("/cam", factory) server.attach()
class RTSPserver: """ GStreamer RTSP server. """ def __init__(self, port, bitrate, framerate): """ **On init:** Some initialization code. :param integer port: RTSP server port. :param integer bitrate: Video bitrate. :param integer framerate: Video framerate. """ self.bitrate = bitrate self.framerate = framerate self.server = Server() self.loop = None self.server.set_service(str(port)) self.factory = [] self.__addMedia() def __addFactory(self,url,factory): mmap = self.server.get_media_mapping() self.factory.append(factory) mmap.add_factory(url,factory) self.server.set_media_mapping(mmap) print "Add Service rtsp://"+socket.gethostname()+":" + self.server.get_service() + url def __addMedia(self): """ videotest """ launch = "videotestsrc pattern=ball ! timeoverlay halign=right valign=top ! clockoverlay halign=left valign=top time-format=\"%Y/%m/%d %H:%M:%S\" ! " launch += "x264enc bitrate="+str(self.bitrate)+" ! rtph264pay name=pay0" mfactory = MediaFactory() mfactory.set_launch(launch) mfactory.set_shared(True) mfactory.set_eos_shutdown(True) self.__addFactory("/videotest.h264", mfactory) """ webcam """ launch = "v4l2src ! video/x-raw-yuv,width=320,height=240,depth=32,framerate="+str(self.framerate)+"/1 ! timeoverlay halign=right valign=top ! clockoverlay halign=left valign=top time-format=\"%Y/%m/%d %H:%M:%S\" ! queue ! " launch += "x264enc bitrate="+str(self.bitrate)+" ! rtph264pay name=pay0" mfactory = MediaFactory() mfactory.set_launch(launch) mfactory.set_shared(True) mfactory.set_eos_shutdown(True) self.__addFactory("/v4l2.h264", mfactory) def run(self): """ Attach server and run the loop (see :attr:`loop`). """ if self.server.attach(): self.loop = MainLoop() self.loop.run() def stop(self): self.loop.quit()