(二)iOS集成FFmpeg
2019-12-09 本文已影响0人
没戏还在演戏
-
第一步
导入.a静态库和include头文件
image.png -
第二步
添加系统依赖库
image.png
-
第三步
配置头文件和.a静态库
include的路径
image.png -
第四步
在代码中测试FFmpeg测试配置信息
报错以及解决方案
错误一
Undefined symbols for architecture arm64:
"_iconv", referenced from:
_avcodec_decode_subtitle2 in libavcodec.a(decode.o)
"_iconv_open", referenced from:
_avcodec_open2 in libavcodec.a(utils.o)
_avcodec_decode_subtitle2 in libavcodec.a(decode.o)
"_iconv_close", referenced from:
_avcodec_open2 in libavcodec.a(utils.o)
_avcodec_decode_subtitle2 in libavcodec.a(decode.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
image.png
错误一 解决方案
在Targets -> General -->Linked Frameworks and Libraries 中,添加
libiconv.tbd
libbz2.tbd
libz.1.2.5.dylib
效果
查看配置信息
//引入头文件
//核心库⤵️ 音视频编解码库
#import <libavcodec/avcodec.h>
+ (void)ffmpegTestConfig {
const char *configuration = avcodec_configuration();
NSLog(@"配置信息,%s",configuration);
}
输出结果:
image.png
视频文件
+ (void)ffmpegVideoOpenfile:(NSString *)filePath {
//第一步:注册组件
av_register_all();
//第二步:打开封装格式文件
//参数一:封装格式上下文
AVFormatContext* avformat_context = avformat_alloc_context();
//参数二:打开视频地址->path
const char *url = [filePath UTF8String];
//参数三:指定输入封装格式->默认格式
//参数四:指定默认配置信息->默认配置
int avformat_open_input_reuslt = avformat_open_input(&avformat_context, url, NULL, NULL);
if (avformat_open_input_reuslt != 0){
//失败了
//获取错误信息
//char* error_info = NULL;
//av_strerror(avformat_open_input_reuslt, error_info, 1024);
NSLog(@"打开文件失败");
return;
}
NSLog(@"打开文件成功");
}
效果