美文网首页
Mac环境下编译ffmpeg

Mac环境下编译ffmpeg

作者: 噜啦啦ya | 来源:发表于2019-05-25 17:47 被阅读0次

    前言:用于记录学习过程,最近学习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

    相关文章

      网友评论

          本文标题:Mac环境下编译ffmpeg

          本文链接:https://www.haomeiwen.com/subject/jwdzzqtx.html