aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/livestreamer/stream.py
diff options
context:
space:
mode:
authorGravatar Christopher Rosell <chrippa@tanuki.se>2012-03-21 22:49:15 +0100
committerGravatar Christopher Rosell <chrippa@tanuki.se>2012-03-21 22:49:15 +0100
commitedfc2de50a4a15fc883a57dffed1e1ae60e93fc9 (patch)
tree8402d30dd8b5b0c6d4241cd9df542b95e0b1ba7c /src/livestreamer/stream.py
parent1f413ed99ca82fc35e004b627654e3e41b8704a2 (diff)
Make livestreamer more usable as a library.
Diffstat (limited to 'src/livestreamer/stream.py')
-rw-r--r--src/livestreamer/stream.py28
1 files changed, 25 insertions, 3 deletions
diff --git a/src/livestreamer/stream.py b/src/livestreamer/stream.py
index 4893172..c2b5658 100644
--- a/src/livestreamer/stream.py
+++ b/src/livestreamer/stream.py
@@ -1,14 +1,35 @@
from livestreamer.utils import CommandLine
+import subprocess, shlex
+
class Stream(object):
def __init__(self, params={}):
self.params = params
+ self.process = None
+
+ def open(self):
+ if self.process:
+ self.close()
+
+ cmdline = self.cmdline().format()
+ args = shlex.split(cmdline)
+
+ self.process = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+
+ def read(self, *args):
+ if self.process:
+ return self.process.stdout.read(*args)
+
+ def close(self):
+ if self.process:
+ self.process.kill()
+ self.process = None
- def cmdline(self, out):
+ def cmdline(self, out=None):
raise NotImplementedError
class RTMPStream(Stream):
- def cmdline(self, out):
+ def cmdline(self, out=None):
cmd = CommandLine("rtmpdump")
for key, value in self.params.items():
@@ -18,6 +39,7 @@ class RTMPStream(Stream):
cmd.args[key] = value
- cmd.args["flv"] = out
+ if out:
+ cmd.args["flv"] = out
return cmd