diff options
author | Christopher Rosell <chrippa@tanuki.se> | 2012-03-21 22:49:15 +0100 |
---|---|---|
committer | Christopher Rosell <chrippa@tanuki.se> | 2012-03-21 22:49:15 +0100 |
commit | edfc2de50a4a15fc883a57dffed1e1ae60e93fc9 (patch) | |
tree | 8402d30dd8b5b0c6d4241cd9df542b95e0b1ba7c /src/livestreamer/stream.py | |
parent | 1f413ed99ca82fc35e004b627654e3e41b8704a2 (diff) |
Make livestreamer more usable as a library.
Diffstat (limited to 'src/livestreamer/stream.py')
-rw-r--r-- | src/livestreamer/stream.py | 28 |
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 |