FFmpeg|FFmpeg for iOS 编译与集成
FFmpeg是一套开源的多媒体处理方案,可以应用于流媒体或直播中,能够实现音视频的编解码以及其他音视频处理等,非常强大。这里简单介绍iOS平台的FFmpeg静态库的编译与集成。1.下载编译脚本 点击此链接,进入github下载编译脚本:GitHub - kewlbear/FFmpeg-iOS-build-script: Shell scripts to build FFmpeg for iOS and tvOS
下载完成并解压后得到:
文章图片
FFmpeg的编译脚本目录
2.运行编译脚本 打开终端,进入文件目录,运行命令行
./build-ffmpeg.sh
编译过程中可能会遇到的错误:
1、报错yasm没有安装,按提示操作安装
2、报错"xcrun -sdk iphoneos clang is unable to create an executable file.",运行命令行
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/
后重新编译3、报错"src/libavutil/arm/asm.S:50:9: error: unknown directive .arch armv7-a",将编译脚本build-ffmpeg.sh中
ARCHS="arm64 armv7 x86_64 i386"
的armv7
去掉后重新编译4、报错".../FFmpeg-iOS-build-script-master-2/ffmpeg-xxx/configure: No such file or directory",打开http://www.ffmpeg.org/releases,将相应版本的源码下载解压后拷贝到/FFmpeg-iOS-build-script-master 文件夹下,重新编译
5、报错"GNU assembler not found, install/update gas-preprocessor",打开https://github.com/mansr/gas-preprocessor,下载安装最新的gas-preprocessor脚本后,重新编译
编译会花费一段时间,如果终端没有报错并显示如下,说明编译成功:
文章图片
编译完成 【FFmpeg|FFmpeg for iOS 编译与集成】这个时候目录下会生成编译后的静态库及源码,如下图:
文章图片
编译完成后的目录 其中,
FFmpeg-iOS
即是我们需要用到的framework3.集成FFmpeg-iOS 将整个FFmpeg-iOS文件夹拖入工程中,并引入相关的头文件,例如:
#import "libavcodec/avcodec.h"
,如果报错'libavcodec/avcodec.h' file not found文章图片
'libavcodec/avcodec.h' file not found 解决方法如下:
在工程的Build Settings中搜索
search
,找到Header Search Paths
与Library Search Paths
,将Library Search Paths
中的ffmpeg的lib路径$(PROJECT_DIR)/FFmpegTest/FFmpeg-iOS/lib
复制粘贴到Library Search Paths
中,并将lib
改为include
文章图片
添加头文件的声明
如果还出现了链接报错clang: error: linker command failed with exit code 1 (use -v to see invocation),可能是因为缺少系统库,需要
#import
,并且需要在工程Build Phases中的Link Binary With Libraries
中Add items:libz.1.2.5.tbd
、libbz2.1.0.tbd
、libiconv.2.4.0.tbd
,成功编译。推荐阅读
- 2020-04-07vue中Axios的封装和API接口的管理
- iOS中的Block
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- 2019-08-29|2019-08-29 iOS13适配那点事
- Hacking|Hacking with iOS: SwiftUI Edition - SnowSeeker 项目(一)
- iOS面试题--基础
- whlie循环和for循环的应用
- ffmpeg源码分析01(结构体)
- 【WORKFOR】最真的自己
- 接口|axios接口报错-参数类型错误解决