将视频录制到字节数组而不写入文件

时间:2014-04-09 14:33:17

标签: android video camera bytearray mediarecorder

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

除了将文件写入手机所花费的时间太长这一事实(录制后,我甚至要在 Gallery 下看到该文件大约需要5分钟),它正在按预期工作。

但我不想要一个文件:我需要记录生成的原始字节数组,然后将其转储到文件中。

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

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

2 个答案:

答案 0 :(得分:3)

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

如果您想要更灵活的内容,则需要使用MediaCodec。在API 18(Android 4.3)之前,您想要的一组功能确实存在。

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

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

答案 1 :(得分:1)

  

录制完成后,我甚至需要大约5分钟才能看到Gallery

下的文件

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