如何让以 H.264 编码的视频流在 "WebView" 中播放?
How to get a video stream encoded in H.264 to play in a "WebView"?
我有一个带有 html5 视频播放器的远程托管网页,可以流式传输 H.264 编码的视频。我需要在我的 Android Activity 中嵌入此页面(不在浏览器中从外部打开)。最新的 Android System Webview(版本 63.0)不支持 H.264 编码,也不支持 Crosswalk 的 Webview(与我的硬件架构相匹配)。我有哪些选择?
更新答案
经过一番挖掘,Android 中的 webview 似乎确实存在支持 h.264 的问题。这是因为它基于 Chromium,默认情况下不包括 h.264 支持(涉及专利等的悠久历史)。
目前最常见的建议似乎是构建您自己的 Chromium 网络视图,构建 options/flags 以包含 h.264。
这是 Chrome 的一个已知限制,在撰写本文时这里列出了一个未解决的错误:
Chrome 和 Chromium 之间的差异在其他地方有详细记录,但本文的关键点之一是 Chromium 是完全开源的,因此避免包含专有组件,这就是为什么许可 H. 264 编解码器不包括在内。
原答案有更正
[除非刚刚发生变化,否则标准 Android 网页视图应该支持 ] Android 设备和 Android chrome 浏览器通常支持 h.264 视频(只要配置文件和设置在设备支持的设置范围内 - 最初使用基线配置文件进行测试是一种安全的开始方式)。 但是,Android 基于 Chromium 的 Webview 在撰写本文时不支持 h.264。
此处提供默认的支持视频格式集:https://developer.android.com/guide/topics/media/media-formats.html#video-formats
在 Android 网络视图中存在 known/reported WebRTC 和 h.264 问题 但一致认为这是与 webRTC 相关的,AFAIK - 请参阅: https://groups.google.com/a/chromium.org/forum/#!topic/android-webview-dev/hVZdHK6MKfI
有两个不同的问题导致 H.264 视频流无法在 Chrome 上为 Android 工作(经常混淆):
1) Chrome for Android 只有 H.264 的硬件实现,没有软件实现。目前,H.264 仅适用于配备 Qualcomm(Kitkat 及更高版本)或 Samsung Exynos(Lollipop 及更高版本)处理器的设备。
2) Chrome 中存在与 H.264
相关的 Android 错误
错误信息如下:
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。
由于您有相同的错误消息(将此视为其他答案下的评论),您的问题与此错误有关。
我有一个带有 html5 视频播放器的远程托管网页,可以流式传输 H.264 编码的视频。我需要在我的 Android Activity 中嵌入此页面(不在浏览器中从外部打开)。最新的 Android System Webview(版本 63.0)不支持 H.264 编码,也不支持 Crosswalk 的 Webview(与我的硬件架构相匹配)。我有哪些选择?
更新答案
经过一番挖掘,Android 中的 webview 似乎确实存在支持 h.264 的问题。这是因为它基于 Chromium,默认情况下不包括 h.264 支持(涉及专利等的悠久历史)。
目前最常见的建议似乎是构建您自己的 Chromium 网络视图,构建 options/flags 以包含 h.264。
这是 Chrome 的一个已知限制,在撰写本文时这里列出了一个未解决的错误:
Chrome 和 Chromium 之间的差异在其他地方有详细记录,但本文的关键点之一是 Chromium 是完全开源的,因此避免包含专有组件,这就是为什么许可 H. 264 编解码器不包括在内。
原答案有更正
[除非刚刚发生变化,否则标准 Android 网页视图应该支持 ] Android 设备和 Android chrome 浏览器通常支持 h.264 视频(只要配置文件和设置在设备支持的设置范围内 - 最初使用基线配置文件进行测试是一种安全的开始方式)。 但是,Android 基于 Chromium 的 Webview 在撰写本文时不支持 h.264。
此处提供默认的支持视频格式集:https://developer.android.com/guide/topics/media/media-formats.html#video-formats
在 Android 网络视图中存在 known/reported WebRTC 和 h.264 问题 但一致认为这是与 webRTC 相关的,AFAIK - 请参阅: https://groups.google.com/a/chromium.org/forum/#!topic/android-webview-dev/hVZdHK6MKfI
有两个不同的问题导致 H.264 视频流无法在 Chrome 上为 Android 工作(经常混淆):
1) Chrome for Android 只有 H.264 的硬件实现,没有软件实现。目前,H.264 仅适用于配备 Qualcomm(Kitkat 及更高版本)或 Samsung Exynos(Lollipop 及更高版本)处理器的设备。
2) Chrome 中存在与 H.264
相关的 Android 错误错误信息如下:
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。
由于您有相同的错误消息(将此视为其他答案下的评论),您的问题与此错误有关。