如何从android api level 14下面的视频视图中捕获帧

时间:2014-01-08 11:38:36

标签: android video-streaming

我想从实时流式传输网址中捕获图像,但setDataSource(String uri, Map<String, String> headers)方法仅适用于API 14+。我如何在14 API以下实现这一目标?

这是我的代码:

public static Bitmap getVideoFrame(Context context, Uri uri) {
        MediaMetadataRetriever retriever = new MediaMetadataRetriever();

        try {
            retriever.setDataSource(uri.toString(),new HashMap<String, String>());

            return retriever.getFrameAtTime();
        } catch (IllegalArgumentException ex) {
            ex.printStackTrace();
            Log.d("test","error:"+ex);

        } catch (RuntimeException ex) {
            ex.printStackTrace();
        } finally {
            try {
                retriever.release();
            } catch (RuntimeException ex) {
            }
        }
        return null;
    }

请帮助我。谢谢你。

1 个答案:

答案 0 :(得分:0)

您可以使用FFmpegMediaMetadataRetriever

public static Bitmap getVideoFrame(Context context, Uri uri) {
    FFmpegMediaMetadataRetriever retriever = new FFmpegMediaMetadataRetriever();

    try {
        retriever.setDataSource(uri.toString());

        return retriever.getFrameAtTime();
    } catch (IllegalArgumentException ex) {
        ex.printStackTrace();
        Log.d("test","error:"+ex);

    } catch (RuntimeException ex) {
        ex.printStackTrace();
    } finally {
        try {
            retriever.release();
        } catch (RuntimeException ex) {
        }
    }
    return null;
}

截图:

enter image description here