1

我正在制作一个基于广播的应用程序我正在使用 videoCore Lib 进行广播,因为我正在使用下面的代码来启动 rtmp 会话

  [_session startRtmpSessionWithURL:urlForStream
                                     andStreamKey:streamID];

urlForStream 是 wowza 服务器的 url,例如 rtmp://some.tv/some/username/username/randamvalue,Randam 值不想每次都覆盖我的视频,所以我正在使用该 url,现在我的问题是 VCSessionState 类状态没有改变它没有进入启动状态,我在这里收到错误是streamsessio.mm class and [NSRL(m_runLoop) run]; 我不知道我想念哪里请帮帮我

4

1 回答 1

0

考虑到我创建自己的 RTMP 协议库的经验,我认为您必须将 URL 分为两部分:tcUrl 和流密钥。在您的情况下,随机值很可能是流键。

NSString *tcUrl;
NSString *stream;
separateRtmpUrl(urlForStream, &tcUrl, &stream);
[_session startRtmpSessionWithURL:tcUrl andStreamKey:stream];

函数的定义separateRtmpUrl可以是这样的。

static void separateRtmpUrl(NSString *baseUrl, NSString **tcUrl, NSString **stream)
{
    NSURL *url = [NSURL URLWithString:baseUrl];
    *stream = url.pathComponents.lastObject;
    *tcUrl  = [NSString stringWithFormat:@"%@://%@%@", url.scheme, url.host,
               [NSString pathWithComponents:
                [url.pathComponents subarrayWithRange:
                 NSMakeRange(0, url.pathComponents.count - 1)]]];

    if (url.query) {
        *stream = [@[*stream , url.query] componentsJoinedByString:@"?"];
        *tcUrl  = [@[*tcUrl  , url.query] componentsJoinedByString:@"?"];
    }
}
于 2015-11-17T06:25:43.903 回答