aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/livestreamer/stream/rtmpdump.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/livestreamer/stream/rtmpdump.py')
-rw-r--r--src/livestreamer/stream/rtmpdump.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/livestreamer/stream/rtmpdump.py b/src/livestreamer/stream/rtmpdump.py
new file mode 100644
index 0000000..68ed969
--- /dev/null
+++ b/src/livestreamer/stream/rtmpdump.py
@@ -0,0 +1,35 @@
+from . import StreamProcess
+from ..compat import str, is_win32
+
+import pbs
+
+class RTMPStream(StreamProcess):
+ def __init__(self, session, params):
+ StreamProcess.__init__(self, session, params)
+
+ self.rtmpdump = self.session.options.get("rtmpdump") or (is_win32 and "rtmpdump.exe" or "rtmpdump")
+ self.params["flv"] = "-"
+
+ try:
+ self.cmd = getattr(pbs, self.rtmpdump)
+ except pbs.CommandNotFound as err:
+ raise StreamError(("Unable to find {0} command").format(str(err)))
+
+ 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)
+
+ def _has_jtv_support(self):
+ try:
+ help = self.cmd(help=True, _err_to_out=True)
+ except pbs.ErrorReturnCode as err:
+ raise StreamError(("Error while checking rtmpdump compatibility: {0}").format(str(err.stdout, "ascii")))
+
+ for line in help.split("\n"):
+ if line[:5] == "--jtv":
+ return True
+
+ return False
+