我是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中压缩视频文件大小的方法和步骤是什么?
感谢任何帮助,我的问题也有助于其他新鲜事。 谢谢
答案 0 :(得分:4)
1)是的,您需要致电System.load("libavcodec.so")
。您可以通过JNI
。
2)您需要创建在C
中实施并调用ffmpeg
的JNI方法。
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>