视频软编码:
软编码主要是利用CPU编码的过程,通常为FFmpeg+x264。
FFmpeg
FFmpeg是一个非常强大的音视频处理库,包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。
FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。
x264
H.264是ITU制定的视频编码标准
而x264是一个开源的H.264/MPEG-4 AVC视频编码函数库,是最好的有损视频编码器,里面集成了非常多优秀的算法用于视频编码.
x264官网
PS:FFmpeg本身并不包含编码器,但存在强大的解码器,而x264只提供了强大的编码器,但是其独立存在,社区提供了将x264编译进FFmpeg的方法,所以开发时使用的为FFmpeg+x264。这里记录x264编码器的使用方法,FFmpeg+x264的使用后续记录。
编译x264
下载x264源码:
https://www.videolan.org/developers/x264.html
下载gas-preprocessor文件:
https://github.com/libav/gas-preprocessor。
将下载的gas-preprocessor文件拷贝到/usr/local/bin目录下。
修改文件权限:chmod 777 /usr/local/bin/gas-preprocessor.pl。
下载x264编译脚本文件:
https://github.com/kewlbear/x264-ios
将脚本文件build-x264.sh 放在x264源码文件同级目录下,并不是x264文件夹里面。
同级目录.png
修改权限、执行脚本:
sudo chmod u+x build-x264.sh
sudo ./build-x264.sh
当脚本执行过程中可能会出现警告导致不能编译成功,一般为yasm版本过低或者nasm版本过低导致的(我遇到的)。
1 | Found yasm x.x.x.xxxx |
或者
1 | Found nasm x.x.x.xxxx |
解决办法:
下载Homebrew,利用Homebrew下载yasm/nasm。
Homebrew下载安装:
地址:https://brew.sh/
Homebrew安装yasm命令:brew install yasm
Homebrew安装nasm命令:brew install nasm
脚本执行完毕生成的文件:
编译好的x264文件夹.png
使用命令行工具查看编译好的.a文件支持的架构:
1 | 命令:lipo -info libx264.a |
当然执行脚本的时候你可以选择想要的架构:
1 | To build everything://支持所有架构 |
x264编码实现
将编译好的x264-iOS文件夹拖入工程即可。
x264编码参数设置:
1 | - (void)setupEncodeWithConfig:(BBVideoConfig *)config{ |
x264编码主要实现代码:
1 | - (void)encoderToH264:(CMSampleBufferRef)sampleBuffer{ |
代码地址:
参考链接:
https://www.cnblogs.com/fojian/archive/2012/09/01/2666627.html
https://web.archive.org/web/20150207075004/http://mewiki.project357.com/wiki/X264_Settings