Support the URL scheme where the playpath is in an RTMP URL is
passed as the slist argument and the app is given infront of the
query part of the URL: rtmp://host[:port]/[app]?slist=[playpath].
---
 libavformat/rtmpproto.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c
index 8d8aabc..028a366 100644
--- a/libavformat/rtmpproto.c
+++ b/libavformat/rtmpproto.c
@@ -2382,7 +2382,7 @@ static int rtmp_open(URLContext *s, const char *uri, int 
flags)
 {
     RTMPContext *rt = s->priv_data;
     char proto[8], hostname[256], path[1024], auth[100], *fname;
-    char *old_app;
+    char *old_app, *qmark;
     uint8_t buf[2048];
     int port;
     AVDictionary *opts = NULL;
@@ -2480,7 +2480,12 @@ reconnect:
     }
 
     //extract "app" part from path
-    if (!strncmp(path, "/ondemand/", 10)) {
+    qmark = strchr(path, '?');
+    if (qmark && strstr(qmark, "slist=")) {
+        // After slist we have the playpath, before the params, the app
+        av_strlcpy(rt->app, path + 1, qmark - path);
+        fname = strstr(path, "slist=") + 6;
+    } else if (!strncmp(path, "/ondemand/", 10)) {
         fname = path + 10;
         memcpy(rt->app, "ondemand", 9);
     } else {
-- 
1.9.2

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to