【问题标题】:What is the preferred way for playback of a web video in Xamarin Forms?在 Xamarin Forms 中播放 Web 视频的首选方式是什么?
【发布时间】:2021-04-23 21:38:50
【问题描述】:

我想:

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

我找到了多种可能的方法,但不确定根据我的情况应该建议什么:

  1. Azure 媒体播放器

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

  1. 自定义渲染器

Xamarin Forms 文档有一个“implementing a video player”部分,他们在其中以自定义呈现器的形式为您提供了一个示例视频播放器。我喜欢 they allow you to style 传输控制自己。 未提及此视频播放器是否具有与 azure 媒体播放器相同的“智能切换”。

  1. 使用 vimeo

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

  1. 又快又脏(天真?)

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

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

【问题讨论】:

  • 我肯定会选择选项 2,还要检查 this official sample,更新更多
  • 你可以试试xamarin嵌入html代码,或者use webpage来实现。
  • @FabriBertani 您能否详细说明为什么您会选择选项 2 而不是其他选项?
  • @SjorsMiltenburg 我发布了更详细的回复

标签: xamarin.forms video-streaming vimeo azure-media-services azure-media-player


【解决方案1】:

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

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

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

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

最后,检查this official sample,比文档更新。

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

【讨论】:

  • 我想我对选项 2 的主要问题是:它是否支持自适应比特率流。因为在移动设备上播放视频时,这似乎是一项重要功能。我认为我将不得不关注潜在的参与者。
  • 我现在正在研究支持大量编解码器的 LibVLCSharp,但不幸的是,它似乎还不支持 v3 中的 Xamarin.Forms.UWP。 code.videolan.org/videolan/LibVLCSharp
  • 也检查Xamarin Community Toolkit上的媒体元素
  • Xamarin 社区工具包中的 MediaElement 看起来很有前途。谢谢你的建议。它看起来比示例更好地支持和记录,但我相信它们实际上是相同的。也很高兴它是一个 nuget 而不是一些复制粘贴的代码。不幸的是,尽管它目前也不适用于 XF.UWP。幸运的是,我刚刚注意到我并不是唯一一个遇到这种情况的人。
  • 我收到一条评论,建议从文档中删除“样本”,因为它已被社区工具包中的 MediaElement 取代。他还告诉我,Xamarin MediaManager 对媒体类型有更广泛的支持。 github.com/MicrosoftDocs/xamarin-docs/issues/…
猜你喜欢
  • 2015-05-31
  • 2019-08-28
  • 2016-02-04
  • 1970-01-01
  • 2020-10-04
  • 1970-01-01
  • 2019-05-19
  • 1970-01-01
  • 2016-12-31
相关资源
最近更新 更多