gmyth-stream/server/plugins/media/vlc.py
author rosfran
Fri Apr 13 20:07:32 2007 +0100 (2007-04-13)
branchtrunk
changeset 545 7f0a3066f6ab
permissions -rw-r--r--
[svn r550] A lot of GObject fixes (using the GType casting), added inheritance to the GMythFile* modules, locks all the the STOP_RECORDING messages.
renatofilho@484
     1
import os
renatofilho@484
     2
import sys
renatofilho@484
     3
import time
renatofilho@484
     4
import socket
renatofilho@484
     5
import ConfigParser
renatofilho@484
     6
renatofilho@484
     7
class Media:
renatofilho@484
     8
renatofilho@484
     9
    def __init__(self, config):
renatofilho@484
    10
renatofilho@484
    11
        self.config = config
renatofilho@484
    12
        self.pipe = ""
renatofilho@484
    13
        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
renatofilho@484
    14
renatofilho@484
    15
        self.path = config.get("Vlc", "path")
renatofilho@484
    16
        self.host = config.get("Vlc", "host")
renatofilho@484
    17
        self.port = int(config.get("Vlc", "port"))
renatofilho@484
    18
        self.pwd = config.get("Vlc", "pwd")
renatofilho@484
    19
renatofilho@484
    20
        # exec VLC
renatofilho@484
    21
        pid = os.fork()
renatofilho@484
    22
        if (pid == 0):
renatofilho@484
    23
            #child
renatofilho@484
    24
            print "ESTOU EM CHILD"
renatofilho@484
    25
            self.path += " -I telnet -d 1> /dev/null 2> /dev/null &"
renatofilho@484
    26
            os.system(self.path)
renatofilho@484
    27
            sys.exit(0)
renatofilho@484
    28
        else:
renatofilho@484
    29
            print "ESTOU EM PARENT 1"
renatofilho@484
    30
            time.sleep(3)
renatofilho@484
    31
            print "ESTOU EM PARENT 2"
renatofilho@484
    32
            self.sock.connect( (self.host, self.port) )
renatofilho@484
    33
            self.sock.send("%s\n" % self.pwd)
renatofilho@484
    34
renatofilho@484
    35
renatofilho@484
    36
    def insert_file(self, filename):
renatofilho@484
    37
renatofilho@484
    38
        self.sock.send("setup output0 input %s\n" % filename)
renatofilho@484
    39
renatofilho@484
    40
renatofilho@484
    41
renatofilho@484
    42
    def setup(self, filename, mux, vcodec, vbitrate,\
renatofilho@484
    43
              fps, acodec, abitrate, width, height, port):
renatofilho@484
    44
renatofilho@484
    45
        self.filename = filename
renatofilho@484
    46
        self.mux = mux
renatofilho@484
    47
        self.vcodec = vcodec
renatofilho@484
    48
        self.vbitrate = int(vbitrate)
renatofilho@484
    49
        self.fps = int(fps)
renatofilho@484
    50
        self.acodec = acodec
renatofilho@484
    51
        self.abitrate = int(abitrate)
renatofilho@484
    52
        self.width = int(width)
renatofilho@484
    53
        self.height = int(height)
renatofilho@484
    54
renatofilho@484
    55
        self.port = int(port)
renatofilho@484
    56
renatofilho@484
    57
renatofilho@484
    58
        self.pipe = "#transcode{vcodec=%s,vb=%d,"\
renatofilho@484
    59
                    "fps=25.0,scale=1,acodec=mpga,"\
renatofilho@484
    60
                    "ab=64,channels=1,width=%d,height=%d}"\
renatofilho@484
    61
                    ":duplicate{dst=std{access=http,"\
renatofilho@484
    62
                    "mux=mpeg1,dst=:%d}}" % (self.vcodec, self.vbitrate,\
renatofilho@484
    63
                                             self.widht, self.height,\
renatofilho@484
    64
                                             self.port)
renatofilho@484
    65
renatofilho@484
    66
        self.sock.send("setup output0 broadcast %s\n" % self.pipe)
renatofilho@484
    67
        self.insert_file(self.filename)
renatofilho@484
    68
renatofilho@484
    69
    def play(self):
renatofilho@484
    70
renatofilho@484
    71
        print "Trying to play: %s" % self.pipe
renatofilho@484
    72
        self.sock.send("control output0 play\n")
renatofilho@484
    73
renatofilho@484
    74
renatofilho@484
    75
    def stop(self):
renatofilho@484
    76
renatofilho@484
    77
        print "Trying to stop: %s" % self.pipe
renatofilho@484
    78
        self.sock.send("control output0 stop\n")
renatofilho@484
    79
renatofilho@484
    80