android在webview上捕获youtube电影

android在webview上捕获youtube电影,android,webview,youtube,capture,Android,Webview,Youtube,Capture,活动中有ImageView和screenscapture按钮和WebView 在WebView上加载“” 您可以查看youtube页面并单击电影 电影将在html中播放 单击按钮以截屏 View root = webView.getRootView(); root.setDrawingCacheEnabled(true); bmp = Bitmap.createBitmap(root.getDrawingCache()); root.setDrawingCache

活动中有
ImageView
screenscapture
按钮和
WebView

在WebView上加载“”

您可以查看youtube页面并单击电影

电影将在html中播放

单击按钮以截屏

    View root = webView.getRootView();
    root.setDrawingCacheEnabled(true);
    bmp = Bitmap.createBitmap(root.getDrawingCache());
    root.setDrawingCacheEnabled(false);
    imageView.setImageBitmap(bmp);
将捕获的图像设置为ImageView

但并没有带字幕的电影。只有黑色区域

为什么拍不到电影

如何在WebView上拍摄电影


请帮帮我。

我遇到了类似的问题。这就是我的场景。我使用
WebView
加载网页。在用HTML5编写的网页中,有一个播放视频的视频。我想捕获
视频的部分内容。那么,我的代码是:

初始化
WebView

String url = ...; 
VideoView vv;
mWebView = (WebView) findViewById(R.id.webview);
mWebView.setWebChromeClient(chromeClient);
mWebView.setWebViewClient(wvClient);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setPluginsEnabled(true);
mWebView.loadUrl(url);
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
    super.onShowCustomView(view, callback);
    if (view instanceof FrameLayout){
        FrameLayout frame = (FrameLayout) view;
        if (frame.getFocusedChild() instanceof VideoView){
            vv = (VideoView) frame.getFocusedChild();
        }
     }
}

覆盖
WebChromeClient

String url = ...; 
VideoView vv;
mWebView = (WebView) findViewById(R.id.webview);
mWebView.setWebChromeClient(chromeClient);
mWebView.setWebViewClient(wvClient);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setPluginsEnabled(true);
mWebView.loadUrl(url);
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
    super.onShowCustomView(view, callback);
    if (view instanceof FrameLayout){
        FrameLayout frame = (FrameLayout) view;
        if (frame.getFocusedChild() instanceof VideoView){
            vv = (VideoView) frame.getFocusedChild();
        }
     }
}

然后,有
Capture()
方法:

public Bitmap capture(VideoView vv){
     MediaMetadataRetriever rev = new MediaMetadataRetriever();
     rev.setDataSource(mContext, Uri);//Uri is the Content URI of the data you want to play, well, call this method before the rest of the methods in this class. This method may be time-consuming.; 
     Bitmap bitmap = rev.getFrameAtTime(vv.getCurrentPosition() * 1000,
            MediaMetadataRetriever.OPTION_CLOSEST_SYNC);
    return bitmap;
}


我不知道我的解决方案能否解决您的问题,但我希望您能从我的代码中得到启发。祝你好运。

@SilentKnight我也遇到了类似的问题,你的答案看起来很有希望。不过我有一个问题:你传递什么作为
uri
Uri.parse(webView.getUrl())
Uri
表示“要播放的数据的内容Uri”。