我正在尝试制作一个类似 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
的 channel ,并且获得了以下引入 URL:
rtmp://test-myappname.channel.mediaservices.windows.net:1935/live/some-long-hexadecimal-string
在 Wirecast 中,我可以通过在“输出设置”中选择 Azure 媒体服务并输入该摄取 URL 来流式传输到 URL(尽管速度非常慢并且连接经常丢失,但不知道为什么)。在 iOS 中,我不知道如何连接到 Azure 媒体服务。
在 startRtmpSessionWithURL:andStreamKey:
方法中,我尝试了 URL 和流 key 的所有可能组合,但没有成功。我不知道我的用户名/密码是什么(Azure 端没有给出任何内容),流 key 是什么(我尝试过 test
、live
、空字符串)以及那个长的十六进制字符串是什么(不过有些消息来源说它被称为定位器)。
连接到 Azure 媒体服务进行流式传输时,RTMP URL 和流 key 的正确格式是什么?
最佳答案
我会找人来帮助你。我认为您只是在 URL 中的长十六进制字符串后面缺少流名称。
rtmp://test-myappname.channel.mediaservices.windows.net:1935/live/some-long-hexadecimal-string/[您的自定义流名称-任何东西都可以!]
此外,您可以控制编码设置吗?可能是某些编码设置不正确。我们尚未使用该 VideoCore 库进行测试,因此 RTMP 协议(protocol)也可能存在细微差异(因为它的文档记录非常少,并且存在大量缺失信息)。
我很好奇为什么您的 Wirecast 设置也出现问题。这听起来不太好开始。网络问题?您是否将其设置为使用 H.264 而不是 x264 设置的正确编码器预设?
根据 Cenk 的博客文章在此处检查您在 Wirecast 中的设置: http://azure.microsoft.com/blog/2014/09/18/azure-media-services-rtmp-support-and-live-encoders/
关于iOS 向 Azure 媒体服务进行直播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29772009/