FFmpeg 编译问题记录
1.此前没有编译大型的C项目的场景,甚至对整个编译过程已经陌生了,重拾编译之路,以前的编译都是开IDE去操作,现在需要使用编译工具链去编译整套项目,所以需要了解CMake,configure等工具的使用。
2. 简单学习configure,cmake等构建工具后,开始编译 Cmake 学习记录
3. ffmpeg的目录下已经有生成了configure脚本
4.大致了解完作用后 跟着这个https://www.jianshu.com/p/94bb964b4305 这个链接走一遍编译流程
版本说明
ndk:23.1.7779620
编译完成
主要是需要根据编译的问题去处理
strip文件找不到 需要到其它ndk版本的文件夹去寻找
编译ffpmpeg 之后在项目的ffmpeg-android 文件夹中有对应so 和 include文件夹 可供android引入进行二次开发
5. 集成至android ndk 开发
ndk开发的原型是cmake 所以得按照这个工具的思路去集成
按照android集成 这个博客的思路可以集成成功
但是我的代码是最新的版本 时间点 2023.1.16 版本应该是ffpmeg 5.1
但是其中FFmpeg4.0版本以后,avcodec_register_all()等方法已经过时 所以android集成中的内容还需要稍微更改一下,主要是修改遍历编解码器的遍历
主要实现
JNIEXPORT jstring JNICALL
Java_com_joker_ffmpeg_FfmpegJni_00024Companion_ffmpegInfo(JNIEnv *env, jobject thiz) {
char info[40000] = {0};
const AVCodec *current_codec = nullptr;
void *i = 0;
while ((current_codec = av_codec_iterate(&i))) {
if (av_codec_is_encoder(current_codec)) {
sprintf(info, "%s encoder [%s]\n",info, current_codec->name);
}else if(av_codec_is_decoder(current_codec)){
sprintf(info, "%s decoder [%s]\n",info, current_codec->name);
}
}
return env->NewStringUTF(info);
}
6.效果
标签:info,集成,FFmpeg,current,编译,codec,android From: https://www.cnblogs.com/Keep-J0K3R/p/17317957.html