如何通过使用FFMPEG lib到android来减少mp4大小

时间:2013-08-29 10:27:11

标签: android android-ndk ffmpeg

我是NDK的新手,所以我阅读了教程,我成功构建了FFMPEG库,而不是将其复制到我的jni文件夹中创建Android.mk和Application.mk文件并执行ndk-build命令,所以现在我得到了libavcodec.so我的lib文件夹..(我没有将ffmpeg头文件复制到我的jni文件夹中..是否有必要添加头文件或者我应该将完整的ffmpeg lib添加到jni ... stack-overflow评论说你只需要添加头文件)

我知道如果我想将我的相机视频转换为小尺寸,而不是通过使用avcodac.so来压缩它,所以我编译它但重要的是这是我如何使用它。

我觉得使用这样的文件有困惑.. 1)我是否需要使用System.load(“libavcodec.so”)方法加载So文件如果加载后文件是,那么文件如何访问C / C ++的本机方法?

2)或者我是否需要创建我的java类和我的c类,它们彼此通信并且c类与avcodec类ffmpeg进行通信?

或者应该需要实现两者,还有一件更重要的事情,如果我必须创建我的c类而不是Android.mk我必须将它添加到源文件行中???

请有人告诉我在FFMPEG中压缩视频文件大小的方法和步骤是什么?

感谢任何帮助,我的问题也有助于其他新鲜事。 谢谢

3 个答案:

答案 0 :(得分:4)

1)是的,您需要致电System.load("libavcodec.so")。您可以通过JNI

访问这些方法

2)您需要创建在C中实施并调用ffmpeg的JNI方法。

适用于Android的

JNI教程:http://code.google.com/p/awesomeguy/wiki/JNITutorial

ffmpeg教程:http://dranger.com/ffmpeg/

答案 1 :(得分:2)

JavaCV附带了Java包装器和FFmpeg的预编译二进制文件。

此外,RecordActivity.java样本似乎完全符合您的要求!

答案 2 :(得分:1)

你在android中使用FFmpeg4库来压缩视频。因此,您可以使用此命令获得更好的视频质量和最低压缩率。我在我的项目中使用它已成功运作。

ffmpeg -i <your input video path.mp4> -s 480x320 -acodec mp2 -strict -2 -ac 1 -ar 16000 -r 13 -ab 32000 -aspect 3:2 <your output video path.mp4>