Android录制的视频压缩

时间:2014-07-28 16:16:27

标签: android ffmpeg compression mediarecorder

这是一个相当冗长的问题,我尝试了几种方法来修复它。

最终的问题是用户录制视频,视频将通过REST API上传。最初的解决方案是使用相机应用程序并通过Intent传递用户。这种方法需要很少的配置来进行视频优化 - 使用MediaStore.EXTRA_VIDEO_QUALITY,值为0会给出MMS优化,这使得视频几乎无法使用,我希望在480p左右有更多的东西。

所以我开始使用MediaRecorder课程创建自定义视频录像机。我设法让它在Nexus 4上正常工作。我还有2个其他测试设备,一个ZTE Blade和一个Acer Iconica标签,它不能与这些设备配合使用。 中兴通讯刀片抱怨视频尺寸不正确,但我使用的视频尺寸由Camera.Parameters.getSupportedVideoSizes提供。 Acer Iconica标签没有任何有效的CamcorderProfile。在所有可用的CamcorderProfile常量上调用CamcorderProfile.hasProfile返回false。因此,如果我没有成功加载CamcorderProfile,我尝试根据我找到的设备配置文件手动配置MediaRecorder。这在某种程度上起了作用,但是当我按下录音时,我看到了一个黑屏。

第二种解决方案是使用现有的相机意图解决方案,然后使用FFMPEG压缩视频。我使用Android NDK的经验是零,所以这是一个挑战。我设法编译了一个与FFMEG本身接口的库 - 这个特别是(https://github.com/Batterii/android-ffmpeg-x264)。 Videokit类初始化,但是在使用以下参数调用run时:

videoKit.run(new String[] {"ffmpeg", "-i", file.getAbsolutePath(), "-vf", "scale=-1:480", "-vcodec", "mp3g4", "-qscale", "3", outputFile.getAbsolutePath()});

应用程序突然停止,没有异常,日志中几乎没有任何内容,只是活动突然停止。

我遇到的最终问题是,任何人都有压缩Android设备上录制的视频的任何解决方案。如果有人可以添加我提到的任何问题,希望能解决这个问题,但我不能正常工作,那么我会更加欣赏。

感谢阅读和任何人的帮助,非常感谢。

0 个答案:

没有答案