【发布时间】:2021-04-23 21:38:50
【问题描述】:
我想:
- 在我的 Xamarin Forms 应用 (iOS + Android + UWP) 中播放视频
- 遵循最佳实践并使用维护的代码
- 能够保护我的内容(基于订阅的访问)
- 如果可能,将传输控件的样式设置为与我的应用具有相同的外观和感觉
我找到了多种可能的方法,但不确定根据我的情况应该建议什么:
- Azure 媒体播放器
我发现 this talk 暗示最好使用 Azure 媒体服务将您的视频转码为不同的质量/格式,这样您就可以进行自适应比特率流式传输,这意味着这取决于连接的质量和设备类型,您将始终在每种类型的设备上以最低的带宽使用获得“最好的”视频。根据this talk 的说法,这需要一个具有逻辑的“智能播放器”来进行质量级别之间的切换。在演讲中,azure 媒体播放器被称为首选视频播放器,因为它支持来自 azure 媒体服务的自适应比特率流 (ABS)。 没有提到其他兼容ABS的播放器。 示例中的转码视频使用托管在 WebView 中的 Azure 媒体播放器播放。由于这次演讲是从 2018 年开始的,并且在最近发布的 Xamarin Forms (5.0) 中,他们已经删除了对 UIWebView 的支持,并将其替换为 WKWebView,我不确定示例中是否使用了 WebView(以及视频播放器)仍受支持/建议。
- 自定义渲染器
Xamarin Forms 文档有一个“implementing a video player”部分,他们在其中以自定义呈现器的形式为您提供了一个示例视频播放器。我喜欢 they allow you to style 传输控制自己。 未提及此视频播放器是否具有与 azure 媒体播放器相同的“智能切换”。
- 使用 vimeo
通过付费订阅,您可以安全地访问您的内容。播放器的样式是有限的,但对于我的目的来说可能已经足够了。他们为您在播放器中进行内容编码/智能切换。您支付月费,并且对每个月可以添加的视频分钟数有限制,但没有其他带宽/存储费用(据我所知)。
- 又快又脏(天真?)
我可以将 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