我正在尝试制作类似Periscope的应用程序(实际上不是,但技术要求相似),用户可以从iPhone快速开始流式传输到未知数量的移动用户。我正在尝试使用Azure媒体服务进行实时视频流,但即使在阅读了文档页面后,我也陷入了困境。
我正在使用VideoCore(https://github.com/jgh-/VideoCore)从iOS设备发布到RTMP服务器。在本地(使用Wowza)我可以使用我设置的用户名和密码连接到本地服务器,如下所示:
vcSession = [[VCSimpleSession alloc] initWithVideoSize:CGSizeMake(1280, 720) frameRate:30 bitrate:1000000 useInterfaceOrientation:NO];
[self.view addSubview:vcSession.previewView];
vcSession.previewView.frame = self.view.bounds;
vcSession.delegate = self;
[vcSession startRtmpSessionWithURL:@"rtmp://172.20.10.2:1935/live?rtmpauth=test:test" andStreamKey:@"test"];
rtmpauth
参数的格式为username:password
,我在本地服务器上将其设置为test
。有用。在Azure中,我创建了一个名为test
的频道,我有以下的摄取网址:
rtmp://test-myappname.channel.mediaservices.windows.net:1935/live/some-long-hexadecimal-string
在Wirecast中,我可以通过在输出设置中选择Azure媒体服务并输入该提取URL来流式传输到URL(尽管速度很慢,连接频繁丢失,不知道原因)。在iOS中,我不知道如何连接到Azure Media Services。
在startRtmpSessionWithURL:andStreamKey:
方法中,我尝试了所有可能的URL和流密钥组合,但没有运气。我不知道我的用户名/密码是什么(Azure端没有给出),流密钥是什么(我试过test
,live
,空字符串)以及那个长十六进制的东西string是(有些消息来说它叫做定位器)。
连接到Azure Media Services进行流式传输时,RTMP URL和流密钥的正确格式是什么?
答案 0 :(得分:4)
我会找人来帮助你。我想你只是在URL中的长十六进制字符串之后缺少一个流名称。
rtmp://test-myappname.channel.mediaservices.windows.net:1935 / live / some-long-hexadecimal-string / [YOUR-CUSTOM-STREAM-NAME-Anything Really!]
此外,您是否可以控制编码设置?某些编码设置可能不正确。我们还没有使用那个VideoCore库进行测试,因此RTMP协议也可能存在细微的差异(因为它的文档很少,并且有很多缺少的信息)。
我很好奇为什么您的Wirecast设置也遇到了问题。这听起来并不好听。网络问题?您是否将其设置为使用H.264和NOT x264设置的正确编码器预设?
在此处针对Cenk的博客文章在Wirecast中查看您的设置:http://azure.microsoft.com/blog/2014/09/18/azure-media-services-rtmp-support-and-live-encoders/