Mac环境下编译ffmpeg

2019-05-25  本文已影响0人  噜啦啦ya

前言:用于记录学习过程,最近学习ffmepge,本文主要记录在Mac环境下编译ffmpeg,获取FFmpeg-iOS

准备工作:

下载需要编译的ffmpeg脚本: FFmpeg-iOS-build-script
在描述文档中可以看到需要准备条件:
1.下载gas-preprocessor
2.yasm 1.2.0

1.gas-preprocessor

1)将文件夹中的gas-preprocessor.pl复制到->/usr/local/bin
2)给该文件相对应读写的权限

chmod 777 gas-preprocessor.pl

2.yasm

这里推荐brew安装,这里记录如何安装 Homebrewhttps://brew.sh/

brew install yasm

3.执行脚本

安装完成yasm之后,进入刚刚下载的FFmpeg-iOS-build-script文件夹中,执行脚本,这个过程会执行很久。。。

./build-ffmpeg.sh

4.使用

1)执行完成之后会当前文件夹中,会生成想要的FFmpeg-iOS文件
2.)将FFmpeg-iOS中的lib拖入到项目中
3)在Targets -> General ->Build Setting -> Header Search Paths 中添加

$(PROJECT_DIR)/include

4)在项目中引用

#include <libavformat/avformat.h>
#include <libavutil/time.h>
#include <libavutil/mathematics.h>
#include <libavfilter/avfilter.h>

遇到的问题

1.执行的时候报错,会显示找不到这个执行文件

错误:./build-ffmpeg.sh: line 135: /Users/***/Desktop/直播/文档/FFmpeg-iOS-build-script-master: No such file or directory
原因:下载了两个FFmpeg-iOS-build-script,解压的时候文件夹的实际名称为FFmpeg-iOS-build-script-master 2,所以一直报错该文件夹内没有./build-ffmpeg.sh文件
解决:将文件夹名称中的2去掉,就可以执行成功

2.将需要的库拖入到项目中之后,bulid报错:

Undefined symbols for architecture arm64:
  "_BZ2_bzDecompressInit", referenced from:
      _matroska_decode_buffer in libavformat.a(matroskadec.o)
  "_iconv", referenced from:
      _avcodec_decode_subtitle2 in libavcodec.a(decode.o)
  "_BZ2_bzDecompress", referenced from:
      _matroska_decode_buffer in libavformat.a(matroskadec.o)
  "_BZ2_bzDecompressEnd", referenced from:
      _matroska_decode_buffer in libavformat.a(matroskadec.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)

解决:在Targets -> General -->Linked Frameworks and Libraries 中,添加
libbz2.tbd 、libiconv.tbd

上一篇下一篇

猜你喜欢

热点阅读