1

我想要:

  • 在我的 Xamarin Forms 应用(iOS + Android + UWP)中播放视频
  • 遵循最佳实践并使用维护的代码
  • 能够保护我的内容(基于订阅的访问)
  • 如果可能,将传输控件的样式设置为与我的应用程序具有相同的外观

我发现了多种可能的方法,但不确定在我的情况下应该建议什么:

  1. Azure 媒体播放器

我发现这个谈话暗示最好使用 Azure 媒体服务将您的视频转码为不同的质量/格式,这样您就可以进行自适应比特率流式传输,这意味着根据连接的质量和设备类型,您将始终在每种类型的设备上以最低的带宽使用拥有“最好的”视频。根据这个谈话,这需要一个“聪明的播放器”,它具有在质量级别之间切换的逻辑。在演讲中,azure 媒体播放器被称为首选视频播放器,因为它支持来自 azure 媒体服务的自适应比特率流 (ABS)。 它没有提到其他具有 ABS 兼容性的播放器。 示例中的转码视频使用托管在 WebView 中的 Azure 媒体播放器播放。由于这次演讲是从 2018 年开始的,并且在最近发布的 Xamarin Forms (5.0) 中,他们已经删除了对 UIWebView 的支持,并将其替换为 WKWebView,我不确定示例中是否使用了 WebView(以及视频播放器)仍然支持/建议。

  1. 自定义渲染器

Xamarin Forms 文档有一个“实现视频播放器”部分,他们在其中以自定义渲染器的形式为您提供了一个示例视频播放器。我喜欢它们允许您自己设置传输控件的样式。没有提及此视频播放器是否具有与 azure 媒体播放器相同的“智能切换”。

  1. 使用 vimeo

通过付费订阅,您可以明显地保护您的内容的访问。播放器的样式是有限的,但对于我的目的来说可能已经足够了。他们为您在播放器中进行内容编码/智能切换。您支付月费,并且对每个月可以添加的视频分钟数有限制,但没有其他带宽/存储成本(据我所知)。

  1. 又快又脏(天真?)

我可以将 mp4 上传到 azure blob 存储,并使用客户渲染器示例直接从 blob 播放视频。然而,这意味着客户端上没有视频质量的动态切换,它们总是会消耗“全部带宽”。

我是视频转码/流媒体的新手。我在分析中遗漏了什么吗?

4

1 回答 1

1

我肯定会选择选项 2,因为:

  1. 它由 Xamarin 和 Microsoft 推荐。
  2. 免费!
  3. 利用本地实现,您将充分利用每个平台的潜力,您可以显示来自任何来源的视频、来自手机或项目或来自 YouTube、Vimeo 等的本地视频(只要它们是公共视频) .
  4. 便于使用。
  5. 由于您处理本机代码,因此很容易自定义,这意味着您负责而不是某些 WebView 或其他库。

我会放弃其他选项,因为:

  • 选项 1 可能是一个不错的选择,但您正在使用 Azure,最终它会花费您或您的客户的钱,并使用 aWebView来显示视频,从 UX 的角度来看它不是很友好。
  • 选项 3:如果我有其他选择,我肯定会放弃付费解决方案,特别是如果其他选项是免费的。
  • 选项 4 和以前一样,你会消耗 Azure 的时间和过程,这会导致你赔钱,如果你想上传公共视频总是上传到 YouTube 或一些类似的服务,但正如你所说,从本机视频播放器是最佳选择。

最后,检查这个官方示例,比文档更新。

PD:它是自定义渲染器,而不是客户渲染器;-)

于 2021-01-20T13:42:30.560 回答