iOS 音视频 -- 编译FFmpeg

时间:2024-04-08 13:33:31

#文件依赖

  1. 最新版的gas-preprocessor
  2. FFmpeg-iOS-build-script
  3. yasm

gas-preprocessor

下载最新的gas-preprocessor

  1. cd gas-preprocessor目录
  2. sudo cp -f /Users/username/Desktop/gas-preprocessor-master/gas-preprocessor.pl /usr/local/bin/
  3. chmod 777 /usr/local/bin/gas-preprocessor.pl

如果第三步失败,可以试试chmod +x gas-preprocessor.pl

yasm

无需下载,直接执行以下命令

  1. brew install yasm
  2. yasm --version

FFmpeg-iOS-build-script

  1. cd 下载目录 如:cd /Users/username/Downloads/FFmpeg-iOS-build-script-master
  2. ./build-ffmpeg.sh 执行脚本
  3. 等待编译结束 编译结束后,会下载一个最新的FFmpeg如下图

iOS 音视频 -- 编译FFmpeg

编译常见错误

执行脚本./build-ffmpeg.sh时出现

错误:GNU assembler not found, install/update gas-preprocessor
原因: gas-preprocessor不是最新版

xcode新建工程

  1. 把编译好的文件lib 和 include添加到工程中
  2. 添加依赖
    – libz.tbd
    – libbz2.tbd
    – libiconv.tbd
    – VideoToolBox.framework
  3. 添加Header Search Path
    $(PROJECT_DIR)/FFmpegDemo/FFmpeg/include
  4. 编译工程

注意:Header Search Path的添加的目录
iOS 音视频 -- 编译FFmpeg
iOS 音视频 -- 编译FFmpeg

编译好的Demo

  1. 第三方kxmovie基于FFmpeg音视频播放器
  2. 导入工程后会出现编译错误
    – KxMovieDecoder 找不到UIImage 解决方案:#import <UIKit/UIKit.h>
    –报错找不到 libavformat/avformat.h 解决方法:Header Search Path添加include目录,Xcode编译工程中已经提到
    – Implicit declaration of function ‘avpicture_deinterlace’ is invalid in C99 方法:对应的代码注释掉,应为在FFmpeg3.0以后已经失效
    – 枚举值根据提示替换掉即可

Demo
链接:https://pan.baidu.com/s/1oYYQS7abQKSumRTZy_WD9A
密码:di9e