iOS 向 Azure 媒体服务进行直播

标签 ios azure azure-media-services videocore

我正在尝试制作一个类似 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 是什么(我尝试过 testlive、空字符串)以及那个长的十六进制字符串是什么(不过有些消息来源说它被称为定位器)。

连接到 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/

相关文章:

ios - 如何在 Swift 中取消初始化惰性变量?

azure - 在应用程序之间共享 ASP.NET Core 数据保护,而不破坏现有的 cookie 和 token

javascript - CasperJs 电子邮件在文本框中无效

azure - 用于写入 SQL 数据库的 USQL 输出器

azure - 不支持的演示文稿 (0x20400003)

.net - 使用Azure媒体服务更改播放速度(速度)

ios - Swift 2 Dictionary<String, AnyObject> 到 Struct getter/setter throwing Cannot subscript value ... with an index of type 'String'

c# - Xamarin - 设置跨平台 Hello World App

ios - 如果不包含任何文本,为什么 UILabel 的高度变为零?

android - 将视频从 Android 流式传输到 Azure 媒体服务