aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/livestreamer/stream.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/livestreamer/stream.py')
-rw-r--r--src/livestreamer/stream.py26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/livestreamer/stream.py b/src/livestreamer/stream.py
index 8dd4115..9f5aafc 100644
--- a/src/livestreamer/stream.py
+++ b/src/livestreamer/stream.py
@@ -1,3 +1,4 @@
+from livestreamer import options
from livestreamer.utils import urlopen
import os
@@ -9,7 +10,7 @@ class StreamError(Exception):
pass
class Stream(object):
- def open(self, **args):
+ def open(self):
raise NotImplementedError
class StreamProcess(Stream):
@@ -17,12 +18,13 @@ class StreamProcess(Stream):
self.params = params or {}
self.params["_bg"] = True
self.params["_err"] = open(os.devnull, "w")
+ self.errorlog = options.get("errorlog")
def cmdline(self):
return str(self.cmd.bake(**self.params))
- def open(self, errorlog=False):
- if errorlog:
+ def open(self):
+ if self.errorlog:
tmpfile = tempfile.NamedTemporaryFile(prefix="livestreamer",
suffix=".err", delete=False)
self.params["_err"] = tmpfile
@@ -34,7 +36,7 @@ class StreamProcess(Stream):
stream.process.poll()
if stream.process.returncode is not None:
- if errorlog:
+ if self.errorlog:
raise StreamError(("Error while executing subprocess, error output logged to: {0}").format(tmpfile.name))
else:
raise StreamError("Error while executing subprocess")
@@ -45,18 +47,22 @@ class RTMPStream(StreamProcess):
def __init__(self, params):
StreamProcess.__init__(self, params)
+ self.rtmpdump = options.get("rtmpdump")
self.params["flv"] = "-"
try:
- self.cmd = pbs.rtmpdump
- except pbs.CommandNotFound:
- raise StreamError("Unable to find 'rtmpdump' command")
+ if self.rtmpdump:
+ self.cmd = pbs.Command._create(self.rtmpdump)
+ else:
+ self.cmd = pbs.rtmpdump
+ except pbs.CommandNotFound as err:
+ raise StreamError(("Unable to find {0} command").format(str(err)))
- def open(self, **args):
+ def open(self):
if "jtv" in self.params and not self._has_jtv_support():
raise StreamError("Installed rtmpdump does not support --jtv argument")
- return StreamProcess.open(self, **args)
+ return StreamProcess.open(self)
def _has_jtv_support(self):
help = self.cmd(help=True, _err_to_out=True)
@@ -71,6 +77,6 @@ class HTTPStream(Stream):
def __init__(self, url):
self.url = url
- def open(self, **args):
+ def open(self):
return urlopen(self.url)