Browse Source

rtmpproto: Support alternative slist parameter in rtmp URLs

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]

(other arguments in the query part are stripped as they are not used)

Signed-off-by: Martin Storsjö <martin@martin.st>
tags/n2.3
Uwe L. Korn Martin Storsjö 11 years ago
parent
commit
7ce3bd9614
1 changed files with 14 additions and 2 deletions
  1. +14
    -2
      libavformat/rtmpproto.c

+ 14
- 2
libavformat/rtmpproto.c View File

@@ -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, fname_buffer[1024];
uint8_t buf[2048];
int port;
AVDictionary *opts = NULL;
@@ -2480,7 +2480,19 @@ reconnect:
}

//extract "app" part from path
if (!strncmp(path, "/ondemand/", 10)) {
qmark = strchr(path, '?');
if (qmark && strstr(qmark, "slist=")) {
char* amp;
// After slist we have the playpath, before the params, the app
av_strlcpy(rt->app, path + 1, qmark - path);
fname = strstr(path, "slist=") + 6;
// Strip any further query parameters from fname
amp = strchr(fname, '&');
if (amp) {
av_strlcpy(fname_buffer, fname, amp - fname + 1);
fname = fname_buffer;
}
} else if (!strncmp(path, "/ondemand/", 10)) {
fname = path + 10;
memcpy(rt->app, "ondemand", 9);
} else {


Loading…
Cancel
Save