7

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

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

使用该so文件时我感到困惑.. 1)我是否需要使用System.load(“libavcodec.so”)方法来加载So文件如果加载so文件后如果是,我如何访问C的本机方法/C++?

2)或者我是否需要创建我的java类和我的c类,它们都相互通信并且c类与ffmpeg的avcodec类通信?

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

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

任何帮助表示赞赏,我的这个问题也将有助于其他新人。谢谢

4

3 回答 3

4

1)是的,你需要打电话System.load("libavcodec.so")。您可以通过 访问这些方法JNI

2)您需要创建在C和调用中实现的 JNI 方法ffmpeg

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

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

于 2013-08-29T10:45:39.703 回答
2

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

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

于 2013-09-28T09:46:34.840 回答
1

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

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>
于 2015-09-22T09:43:03.193 回答