ios ffmpeg x264 fdk-aac 打包静态库并运行通过 解决 libfdk_aac not found 问题

1.音视频开发需要引入x264 和fdk-aac的 库
参考本篇文章进行 ffmpeg 的ios 环境下的编译
我在编译的过程中,遇到了自己打的fdk-aac编译不过的情况,
最后下载了这篇文章的源码,把他的fdk-aac 抠出来,然后
放在自己的ffmpeg脚本同级目录下,就生成.a通过了。

libfdk_aac not found 问题
补充 我打fdk-aac失败的原因是 脚本不对
经过测试这个脚本才能够打包成功打出来的是20多M大小

2.新建一个xcode 项目使用ffmpeg,
参考了这篇文章的最后一张图片进行修改head search paths 来保证静态库的头文件能够查找的到

3.编写ffmpeg 的代码
引入头文件,并注册所有的ffmpeg 组件

遇到了两个问题,

"av_register_all()", referenced from:

以上面为关键字 搜索第一个的结果就是答案,
原因是C++ 中引入 c 的代码 要用 extern 的方式来引用头文件。

就是改写成下面的格式

extern "C" {
#include "libavformat/avformat.h"
}

_参考这篇文章解决了x264的问题
其实就是x264的库不存在,因为只引入了ffmpeg 的库,并没有
并没有添加x264的库,所以也拖进去,加头文件即可。
fdk-aac同理。

#import "AppDelegate.h"
extern "C" {
#include "libavformat/avformat.h"
}
#include <libavcodec/avcodec.h>
@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    av_register_all();
    printf("%s\n", avcodec_configuration());  
    return YES;
}

打印结果

--target-os=darwin --arch=arm64 --cc='xcrun -sdk iphoneos clang' --as='gas-preprocessor.pl -arch aarch64 -- xcrun -sdk iphoneos clang' --enable-cross-compile --disable-debug --disable-programs --disable-doc --enable-pic --enable-gpl --enable-libx264 --enable-libfdk-aac --enable-nonfree --extra-cflags='-arch arm64 -mios-version-min=9.0 -fembed-bitcode -I/Users/yeyifan/Documents/VideoAudio/ios-build/ffmpegbuild/x264-iOS/include -I/Users/yeyifan/Documents/VideoAudio/ios-build/ffmpegbuild/fdk-aac-ios/include' --extra-ldflags='-arch arm64 -mios-version-min=9.0 -fembed-bitcode -L/Users/yeyifan/Documents/VideoAudio/ios-build/ffmpegbuild/x264-iOS/lib -L/Users/yeyifan/Documents/VideoAudio/ios-build/ffmpegbuild/fdk-aac-ios/lib' --prefix=/Users/yeyifan/Documents/VideoAudio/ios-build/ffmpegbuild/thin/arm64

表示整个项目已经跑起来了

猜你喜欢

转载自blog.csdn.net/github_35041937/article/details/80727772