【问题标题】:Record Video To Byte Array Without Writing To File将视频录制到字节数组而不写入文件
【发布时间】:2014-04-09 14:33:16
【问题描述】:

我正在使用Google Developer API Guide 实现自定义摄像机;它使用MediaRecorder 类来创建和管理摄像机的所有设置/操作。

除了将文件写入手机所需的时间太长(录制后,我什至需要大约 5 分钟才能看到 Gallery 下的文件),它正在正常工作。

但我不想要文件:我需要原始字节数组记录在转储到文件之前生成。

MediaRecorder 甚至允许你这样做吗?我的方向正确吗?

我需要的一个很好的例子是PictureCallbackonPictureTaken() 方法如何为您提供一个字节数组,其中包含以字节为单位的图片。

【问题讨论】:

  • 我不知道 Android 支持的原始视频编解码器。大多数编解码器,如 MP4,会导致记录器想要重写文件头。欢迎您像 Vine 一样将这些预览帧中的视频拼接在一起。
  • 好的,那我该怎么做呢?
  • 我假设他们正在使用ffmpeg 或类似的东西来创建帧外的视频。有一个会议视频,其中 Vine 工程师解释了他们使用MediaRecorder 遇到的问题以及他们如何使用预览回调帧结束,尽管我没有链接,我不记得他们进入低级细节他们的解决方案。
  • 知道为什么保存视频需要这么长时间吗?
  • 查看此相关解决方案:stackoverflow.com/questions/13974234/…

标签: android video camera bytearray mediarecorder


【解决方案1】:

MediaRecorder 旨在简单:告诉它输入来自哪里,给它一个要写入的文件,然后让它运行。

如果你想要更灵活的东西,你需要使用MediaCodec。在 API 18 (Android 4.3) 之前,您想要的一组功能并不真正存在。

Grafika 包含“连续捕获”活动,它将 H.264 视频记录到内存中的循环缓冲区,并在您点击“捕获”时将当前帧集写入文件。这只是视频;如果您想要音频,则需要单独处理。

对于早期版本的 Android,您需要使用 ffmpeg 之类的第三方库来处理视频编码,这会显着降低帧速率。

【讨论】:

    【解决方案2】:

    录制完成后,大约 5 分钟后我才能看到 Gallery 下的文件

    这可能是因为您没有采取任何措施使其更快地显示在图库中,例如使用MediaScannerConnectionscanFile()。除非您告诉它有关文件的信息或定期扫描出现,否则图库不会找到文件。

    【讨论】:

    • 您对上述问题有什么建议吗?我也遇到了同样的问题。
    猜你喜欢
    • 2014-04-10
    • 2014-02-20
    • 2016-07-05
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多