为了账号安全,请及时绑定邮箱和手机立即绑定

捕捉视频(Camera API)和MediaCodec的简单使用

捕捉视频(Camera API)和MediaCodec的简单使用

HUX布斯 2022-12-15 14:49:47
最近我正在使用 MediaRecorder 捕获视频并在输出中处理它们。然而事实证明,存在安全限制,这不允许我从 MediaRecorder 捕获输出流(问题出现在下面的链接中):与 MediaRecorder Android 6.0 (API 23) 一起使用的“可搜索”文件描述符所以我不得不精心设计另一个解决方案,并决定使用 Camer API 并在那里获取流。所以第一种方法是使用 onPreviewFrame,捕捉文件中的帧并转换颜色和格式 (MediaCodec)。幸运的是,可以通过从例如 SuraceTexture 获取视频来规避颜色转换问题,如 bigflakes 项目中所述:https://bigflake.com/mediacodec/CameraToMpegTest.java.txt我不是 Android Java 的新手,但这真的让我不知所措。我不想要现成的收据,我很乐意在接下来的整个星期里坐下来工作并破解该代码,但首先我的问题是:你们如何理解 MediaCodec 从例如 SurfaceTexture 获取视频然后将其放入MediaMuxer,其次,您能否推荐一些教程,您可以从该主题的最简单项目开始,然后逐渐扩展代码?我真的尝试在 bigflakes 项目上工作,但我很无助,即使因为缺少 onCreate 方法.. 最好的部分是在他开始渲染视频时开始的。
查看完整描述

1 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

Bigflakes MediaCodec 页面主要包含 的测试MediaCodec,如果您仍然坚持将其用作参考,则从 CameraToMpegTest 开始encodeCameraToMpeg()同时查看EncodeAndMux以了解如何设置MediaCodec encoder.

有关有效的视频捕获示例,请查看taehwandev 的 MediaCodecExample。有关如何解码录制视频的示例,请查看 Google 示例存储库中提供的BasicMediaDecode

将 MediaCodec 与Camera1API 一起使用的优势在于,您将能够支持 API 级别 18 及更高级别的设备。如果您只针对 API 级别 21 及更高级别,那么Camera2应该可以,这里有一个Android Camera2Video 示例供您在需要时参考。

最后,看看新的 API 可能也是值得的CameraX,虽然它不应该在生产中使用,但这是 android 的相机 API 正在朝着的方向发展。因此,可能值得查看官方文档并阅读一两个指南(例如:Exploring CameraX)以提前了解基本概念。

注意 - 不要在生产代码中使用 CameraX API,因为 CameraX 库处于 alpha 阶段并且其 API 表面尚未最终确定。我只是将它作为一个选项提供,供您密切关注以供将来参考


查看完整回答
反对 回复 2022-12-15
  • 1 回答
  • 0 关注
  • 52 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信