iOS之道

(二)iOS集成FFmpeg

2019-12-09  本文已影响0人  没戏还在演戏

报错以及解决方案

错误一

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(@"打开文件成功");
    
}

效果

上一篇 下一篇

猜你喜欢

热点阅读