从今天开始大家一起来学习FFmpeg吧,目标是移动端 录制->编码->推流,收流->解码->播放整套流程。
一、Mac上安装及体验
1. 安装FFmpeg
终端运行:brew install ffmpeg
如果提示liblzma.5.dylib版本不够,运行命令:brew install xz
(因为通过brew search liblzma
提示lzma已经是xz的一部分)
2. 功能体验
找到一个mp4格式的文件,在终端运行:ffmpeg -i demo.mp4 output.avi
成功后,既可播放转换完成的AVI视频。(如果Mac默认的播放器无法播放,可安装Movist播放)
二、iOS环境搭建
1. 安装 yams
brew install yams
2. 安装插件
2.1 从 https://github.com/libav/gas-preprocessor 下载文件脚本文件
2.2 将下载得到的 gas-preprocessor.pl 拷贝至bin目录下:
`cp gas-preprocessor.pl /usr/local/bin/`
2.3 修改此文件权限:
cd /usr/local/bin
sudo chmod 777 gas-preprocessor.pl
3. 通过脚本完成编译
从 https://github.com/kewlbear/FFmpeg-iOS-build-script 下载得到build-ffmpeg.sh文件 执行此文件,得到FFmpeg-iOS文件夹,里面包括两个子文件夹,分别包括头文件及.a文件
(如果编译提示/bin/sh: …: No such file or directory等异常,可先CD到/usr/local/bin/目录下,直接调用build-ffmpeg.sh文件进行编译)
4. 工程配置
4.1 将FFmpeg-iOS文件夹添加至Xcode工程,确保“Library Search Paths”指向正确的FFmpeg-iOS/lib文件夹(通常添加至工程时会自动生成正确指向);确保“Header Search Paths”指向正确的FFmpeg-iOS/include文件夹(通常需手动设置)
4.2 确保项目添加了以下framework:libz.dylib、libbz2.dylib、libiconv.dylib、avfoundation、coremedia以及VideoToolbox
4.3 添加一个头文件引用 #include “avformat.h”,添加一个api语句:av_register_all()
4.4 添加或修改一个类文件.m后缀改为.mm,开启混编模式。(swift混编模式中此步可省略)
4.5 运行工程,如果没有报错,则表示编译成功。恭喜,环境搭建完成了。(如果确保以上步骤正常,但编译时还是提示 ‘libavcodec/avcodec.h’ file not found,需修改“Header Search Paths”中FFmpeg-iOS/include文件夹的路径为绝对路径)
作者 @代码书生
2016 年 06月 01日