如何拍摄当前播放视频的屏幕截图?

mil*_*ind 11 video android

我正在尝试截取当前正在播放的视频.我正在尝试使用能够成功获取网络视图截图的代码,但却没有成功拍摄当前播放视频的照片.

Web视图的代码如下.

WebView w = new WebView(this);

w.setWebViewClient(new WebViewClient()
{
    public void onPageFinished(WebView view, String url)
    {
         Picture picture = view.capturePicture();
         Bitmap  b = Bitmap.createBitmap( picture.getWidth(),
         picture.getHeight(), Bitmap.Config.ARGB_8888);

         Canvas c = new Canvas( b );

         picture.draw( c );

         FileOutputStream fos = null;

         try {
             fos = new FileOutputStream( "/sdcard/yahoo_" +System.currentTimeMillis() + ".jpg" );

             if ( fos != null )
             {
                 b.compress(Bitmap.CompressFormat.JPEG, 90, fos );

                 fos.close();
             }

         } catch( Exception e )
         {
             //...
         }
    }
});

setContentView( w );

w.loadUrl( "http://www.yahoo.com");
Run Code Online (Sandbox Code Playgroud)

Wil*_*ann 1

为了扩展 66CLSjY 的答案,FFmpegMediaMetadataRetriever具有与MediaMetadataRetriever相同的接口,但它使用FFmpeg作为后端。如果默认配置不适用于您的视频格式,您可以通过重新编译来启用/禁用编解码器。这是一些示例代码:

FFmpegMediaMetadataRetriever mmr = new FFmpegMediaMetadataRetriever();
mmr.setDataSource(mUri);
mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_VIDEO_CODEC);
Bitmap b = getFrameAtTime(3000);
mmr.release();
Run Code Online (Sandbox Code Playgroud)