我想要:
- 在我的 Xamarin Forms 应用(iOS + Android + UWP)中播放视频
- 遵循最佳实践并使用维护的代码
- 能够保护我的内容(基于订阅的访问)
- 如果可能,将传输控件的样式设置为与我的应用程序具有相同的外观
我发现了多种可能的方法,但不确定在我的情况下应该建议什么:
- Azure 媒体播放器
我发现这个谈话暗示最好使用 Azure 媒体服务将您的视频转码为不同的质量/格式,这样您就可以进行自适应比特率流式传输,这意味着根据连接的质量和设备类型,您将始终在每种类型的设备上以最低的带宽使用拥有“最好的”视频。根据这个谈话,这需要一个“聪明的播放器”,它具有在质量级别之间切换的逻辑。在演讲中,azure 媒体播放器被称为首选视频播放器,因为它支持来自 azure 媒体服务的自适应比特率流 (ABS)。 它没有提到其他具有 ABS 兼容性的播放器。 示例中的转码视频使用托管在 WebView 中的 Azure 媒体播放器播放。由于这次演讲是从 2018 年开始的,并且在最近发布的 Xamarin Forms (5.0) 中,他们已经删除了对 UIWebView 的支持,并将其替换为 WKWebView,我不确定示例中是否使用了 WebView(以及视频播放器)仍然支持/建议。
- 自定义渲染器
Xamarin Forms 文档有一个“实现视频播放器”部分,他们在其中以自定义渲染器的形式为您提供了一个示例视频播放器。我喜欢它们允许您自己设置传输控件的样式。没有提及此视频播放器是否具有与 azure 媒体播放器相同的“智能切换”。
- 使用 vimeo
通过付费订阅,您可以明显地保护您的内容的访问。播放器的样式是有限的,但对于我的目的来说可能已经足够了。他们为您在播放器中进行内容编码/智能切换。您支付月费,并且对每个月可以添加的视频分钟数有限制,但没有其他带宽/存储成本(据我所知)。
- 又快又脏(天真?)
我可以将 mp4 上传到 azure blob 存储,并使用客户渲染器示例直接从 blob 播放视频。然而,这意味着客户端上没有视频质量的动态切换,它们总是会消耗“全部带宽”。
我是视频转码/流媒体的新手。我在分析中遗漏了什么吗?