之前由于不想升级mac系统,所以一直没有升级到Xcode9。没想到一升级项目就报错,而且还是定位到系统的类!“Typedef redefinition with different types ('NSString *' vs 'AVMediaType') ”,大概就是说'AVMediaType'这个关键字被定义成了两种不同的类型,'NSString *'和枚举类型。找了下是FFmpeg定义了这个枚举。然后用Xcode8打开还是会报莫名奇怪的错误,没办法只能解决先了。
网上搜索,答案很少。给出的建议是修改FFmpeg的枚举名称(毕竟苹果不可能改他新增加的typedef类型),然后重新编译。哥们儿实在是找不到其他的解决办法了,只能硬着头皮来改FFmpeg代码里面的枚举变量名。还好这个枚举使用的地方不多,大概也就七八十个左右。下面列出来用到'AVMediaType'的文件:cmdutils.c 、 ffmpeg_filter.c ffmpeg_opt.c 、ffmpeg.c、 ffmpeg.h ffplay.c、libavcodec/avcodec.h 、libavcodec/codec_desc.c、libavfilter/avfilter.c、libavfilter/avfilter.h、 libavfilter/avfiltergraph.c、libavfilter/buffersink.c、libavfilter/buffersink.h、libavfilter/formats.c、 libavfilter/formats.h、libavfilter/framepool.c、libavfilter/internal.h、 libavfilter/setpts.c、 libavfilter/src_movie.c、libavformat/asfdec_f.c、 libavformat/asfdec_o.c、 libavformat/avformat.h、
libavformat/avienc.c、libavformat/flvdec.c、 ibavformat/format.c、
ibavformat/hls.c、 ibavformat/matroskaenc.c、 ibavformat/mpeg.c、ibavformat/mpegts.c、ibavformat/rtp.c、ibavformat/rtp.h、ibavformat/rtpdec.c、
ibavformat/rtpdec.h、ibavformat/rtsp.c、ibavformat/segment.c、
ibavformat/uncodedframecrcenc.c、ibavformat/utils.c、libavutil/avutil.h、
libavutil/utils.c
tools/uncoded_frame.c。
整个查找过程是个体力活,编译过程还算幸运,就错了一次,然后根据提示修改了一个地方编译成功。FFmpeg具体是怎样编译的,大家可以去看这篇简书:http://www.jianshu.com/p/1f06b27b3ac0讲的很详细。唯一需要注意的地方是编译之前修改FFmpeg的编译选项,默认是不支持h.265解码的。这篇简书上有ijkplayer的GitHub地址,里面有如何修改编译选项的说明。
编译好的FFmpeg我已经放在网盘里链接: https://pan.baidu.com/s/1hr2Y1ZQ 密码: bv8u
Xcode9 FFmpeg报错
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 导入项目,有静态包经验的就就不用看了,这个对于我这个半路出家的和尚还是处理了老半天才解决..a文件直接导入 .h文...
- 前几天项目需要压缩视频,Github上找了许多库,要么就是太大,要么就是质量不高,其实我只需要压缩视频,最好的方案...
- 前言:项目需要增加视频拍摄和压缩的功能,了解到FFmpeg开源并且运用广泛,遂用之 1.1 FFmpeg简单介绍...