在Android中抓取视频帧

时间:2012-02-24 06:26:14

标签: android android-camera yuv

我一直在寻找从视频流中抓取YUV帧的不同方法,但我看到的大部分内容都依赖于从previewSize获取宽度和高度。但是,手机可以以720p的速度拍摄视频,但是很多手机只能以较低的分辨率(即800x480)显示,所以有可能获得更接近1920x1080的屏幕截图(如果视频是以720p拍摄的话)吗?或者我是否被迫使用预览分辨率(某些手机上的800x400)?

由于

1 个答案:

答案 0 :(得分:-1)

是的,你可以。 *

*条件适用 -

  • 您需要访问中间层,媒体框架工作才能更精确
  • 不,只能通过应用程序
  • 来完成

现在,如果您想在媒体框架工作级别执行此操作,请执行以下步骤 -

  • 假设您使用的是Froyo及以上版本,则使用的默认媒体框架工作是StageFright
  • 在StageFright中,在从onVideoEvent读取缓冲区后,转到方法mVideoSource,使用mVideoBuffer以原始分辨率访问视频帧

将其与您的应用程序链接 -

  • 您需要在应用程序中使用一个按钮来指示屏幕截图
  • 用户按下此按钮后,您将从上述位置读取视频帧,然后将此缓冲区返回到Java层
  • 从这里您可以使用JPEG编码器将原始视频帧转换为图像。

修改 重新阅读您的问题,您要求在录制过程中捕获屏幕或摄像机路径。即使这样在单独的应用程序中也无法实现这一点,您将不得不做类似的事情,但您需要访问StageFright框架中的CameraSource