[OMX.google.h264.decoder] setPortMode on output to DynamicANWBuffer failed w/ err -1010

Android 集成腾讯X5 WebView加载网页 H5 视频播放失败(有声音,没画面)!
错误提示:[OMX.google.h264.decoder] setPortMode on output to DynamicANWBuffer failed w/ err -1010


这个问题是因为Android系统自带的视频解码器不支持H5网页中的H.264格式视频。解决方法有两种:
1. 使用系统自带的软解码器:
java
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JsInterface(), "demo");
webView.loadUrl("javascript:callAndroid()");

public class JsInterface {
    @android.webkit.JavascriptInterface
    public void callAndroid() {
        webView.loadUrl("javascript:(function() {  var tag = document.createElement('script');  tag.src = 'http://yourserver/mediaplayer.js';  var firstScriptTag = document.getElementsByTagName('script')[0];  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);})()"); 
    }
}
然后在mediaplayer.js中使用video.js等播放器来播放,它会使用系统软解码器播放H.264视频。
2. 集成腾讯X5内核,它自带H.264硬解。可以参考https://x5.tencent.com/help/docDetail?id=408&lang=zh。
所以这里我推荐使用第二种方案,集成腾讯X5内核,它能更好的支持各种视频格式的播放。
我们可以通过两种方式来支持H5中H.264视频的播放:
1. 使用系统自带的软解码器,需要在JavaScript中注入一个视频播放器,比如video.js,它会使用系统软解码器播放视频。
2. 集成第三方内核,如腾讯X5内核,它自带H.264硬解支持,可以完美播放H5中的视频。
所以如果能提供完整的错误日志,我可以给出更具体的解决方案。谢谢!
根据您提供的错误信息“[OMX.google.h264.decoder] setPortMode on output to DynamicANWBuffer failed w/ err -1010”,这显然是一个视频解码错误。
由于Android系统自带的视频解码器不支持H5网页中的H.264格式视频,所以出现此错误。
解决方案是:
1. 使用系统软解码器,在JavaScript中注入一个第三方视频播放器,比如video.js,它会使用软解码器播放视频。
2. 集成腾讯X5内核,它自带H.264硬解支持,可以完美播放H5视频。
所以这里我会推荐使用第二种方案,集成X5内核。具体步骤如下:
1. 访问腾讯X5官网https://x5.tencent.com/下载X5内核SDK。
2. 将下载的SDK集成到您的项目中。
3. 将WebView的内核切换到X5内核:
java
WebView webView = (WebView) findViewById(R.id.webview);
X5WebView webView = new X5WebView(this);
webView.setX5WebViewClient(new X5WebViewClient(this)); 
setContentView(webView);
4. 加载H5网页,X5内核会自动支持H.264视频的硬解和播放。
这样就可以实现在WebView中播放H5中的H.264视频了。