如何使用H.264编码的视频流在" WebView"?中播放?

时间:2018-01-18 13:22:58

标签: android html5 video webview crosswalk

我有一个带有html5视频播放器的远程托管网页,可播放H.264编码的视频。我需要在我的Android Activity中嵌入此页面(不在浏览器外部打开)。最新的Android System Webview(版本63.0)不支持H.264编码,也不支持Crosswalk的Webview(匹配我的硬件架构)。我有什么选择?

2 个答案:

答案 0 :(得分:3)

更新回答

经过一番挖掘,似乎Android中的webview确实存在支持h.264的问题。这是因为它基于Chromium,默认情况下不包括h.264支持(涉及专利等的历史悠久)。

目前最常见的建议似乎是构建您自己的Chromium Web视图,其中构建选项/标志包含h.264。

这是Chrome的一个已知限制,在撰写本文时,此处列出了一个开放的错误:

Chrome和Chromium之间的差异在其他地方有详细记载,但在此背景下的关键点之一是Chromium是完全开源的,因此避免包含专有组件,这就是未包含许可的H.264编解码器的原因。

带有更正的原始答案

[除非有些东西刚刚改变,标准的Android网页视图应该支持] Android设备,Android Chrome浏览器通常支持h.264视频(只要配置文件和设置在集合中)设备支持 - 最初使用基线配置文件进行测试是一种安全的启动方式。 但是,基于Chromium的Android Webview在撰写本文时并不支持h.264。

此处提供了默认的受支持视频格式集:https://developer.android.com/guide/topics/media/media-formats.html#video-formats

Android网页视图中已知/已报告WebRTC和h.264问题,但大家一致认为这与webRTC相关,AFAIK - 请参阅:https://groups.google.com/a/chromium.org/forum/#!topic/android-webview-dev/hVZdHK6MKfI

答案 1 :(得分:1)

有两个不同的问题使得H.264视频流无法在Android版Chrome上运行(通常会混淆):

1)Android版Chrome只有H.264的硬件实现,没有软件实现。目前,H.264仅适用于配备Qualcomm(Kitkat及更高版本)或Samsung Exynos(Lollipop及更高版本)处理器的设备。

2)Chrome for Android中存在与H.264相关的错误

错误信息如下:

Unhandled Promise Rejection: OperationError (DOM Exception 34): 
Failed to set remote offer sdp: Session error code: ERROR_CONTENT. 
Session error description: Failed to set remote video description send parameters..

Chrome Android does not offer/answer H.264 Constrained Baseline Profile

Chrome Android M65可能会解决此问题。请参阅this for more information

由于您有相同的错误消息(在另一个答案下将其视为注释),您的问题与此错误有关。