0

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

谢谢

4

1 回答 1

-1

是的你可以。*

* 适用条件 -

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

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

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

将此与您的应用程序相关联 -

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

编辑: 重新阅读您的问题,您在录制期间要求屏幕截图或相机路径。即使这样,也无法单独在应用程序中实现这一点,您将不得不做类似的事情,但您需要CameraSource在 StageFright 框架中访问。

于 2012-02-24T06:45:44.343 回答