前言
本文会讲述FFmpeg下载/配置/编译/安装的完整流程,该流程并不复杂,因此本文的重点在于如何整合MetaRTC。MetaRTC的作用是令FFmpeg支持WebRTC推/拉流及回声消除功能(常规版本的FFmpeg是不支持该功能的),使得WebRTC音视频编程门槛将被大大降低。事实上,关于FFmpeg整合MetaRTC的流程并不会太过复杂,但是由于官方文档的“简略性”,还是会令很多初学者难以成功安装/整合,因此本文会完整详细的介绍整个流程。
需要注意的是:目前MetaRTC对MAC的支持性并不好…即如果你是MAC,那能否整合成功整合全看玄学…
FFmpeg整合MetaRTC有两种方式:一是直接下载安装整合了MetaRTC的FFmpeg;二是在已安装的FFmpeg上整合。无论是哪一种,都需要重新配置/编译FFmpeg,因此两者的本质其实是一致的,故而本文会直接介绍前者的详细流程。
常规版本下载/配置/编译/安装
地址(版本自选):http://ffmpeg.org/download.html?aemtn=tg-on
- 配置:./configure --prefix=/usr/local/ffmpeg
- 编译:make
- 安装:make install
- 查看版本(判断是否安装成功):./ffmpeg -version
MetaRTC整合版本下载/配置/编译/安装
下载
版本(版本固定):https://gitee.com/metartc/ffmpeg-metartc
成功下载后,将压缩包移动至/usr/local文件夹(路径可自定义)下并执行[unzip ffmpeg-metartc-main]指令进行解压,随后执行[cd /usr/local/ffmpeg-metartc-main/FFmpeg-n4.3.3]进入FFmpeg-n4.3.3文件下,准备下一步配置。
整合准备
在正式对FFmpeg进行配置之前,需要先对MetaRTC及三个第三方软件进行配置/编译/安装,以获取五个用于整合MetaRTC的资源文件。MetaRTC及第三方软件都已在整合版本的FFmpeg压缩包中携带,因此无需额外下载。
在FFmpeg-n4.3.3文件夹中执行[cd metartc5]指令进入metartc5文件夹,可以看到libsrtp-2-fit.tar.gz、openssl-1.1-fit.tar.gz及speexdsp-SpeexDSP-1.2.0.tar.gz三个软件压缩包,具体如下图。
这些第三方软件压缩包我们会在稍后配置/编译/安装,但现在我们先继续执行[cd metartc5/libmetartccore5]指令进入libmetartccore5文件夹,以完成对MetaRTC的构建。
执行[./cmake_x64.sh]或[./cmake_android.sh]指令,对MetaRTC进行构建。如果能够构建成功,那很好,你的安装/整合基本成功70%了;而对于非MAC但失败的开发者,则还有成功希望;而如果你是MAC且失败的开发者…那基本是凉凉了(大概率是某某底层文件不存在的系统类型/版本问题)…下面的流程也可以不用看了。
执行[./cmake_x64.sh]指令构建成功后,继续执行[cd build]指令进入刚刚构建生成的build文件夹,在这里我们将找到首个整合资源文件libmetartccore5.a,执行[cp -r libmetartccore5.a /usr/local/ffmpeg-metartc-main/FFmpeg-n4.3.3/metartc5/libmetartccore5.a]指令将整合资源文件复制移动至目标文件夹中备用。目标文件夹实际上可以自定义,但推荐使用指令中的路径,并且最好要达成统一,以方便下文编译整合FFmpeg时快速指定。
执行[cd /usr/local/ffmpeg-metartc-main/FFmpeg-n4.3.3/metartc5]指令来到第三方软件压缩包所在文件夹(也是本文的目标文件夹),并依次对第三方软件进行解压/配置/编译/安装,具体指令流程如下:
libsrtp-2-fit.tar.gz
执行[tar -xzvf libsrtp-2-fit.tar.gz]指令解压文件夹;
执行[cd libsrtp-2-fit]指令进入libsrtp-2-fit文件夹;
执行[./configure]指令进行配置;
执行[make]指令进行编译;
执行[make install]指令进行安装。
安装完成后,在libsrtp-2-fit文件夹下可以找到第二个整合资源文件libsrtp2.a,执行[cp -r libsrtp2.a /usr/local/ffmpeg-metartc-main/FFmpeg-n4.3.3/metartc5/libsrtp2.a]指令将整合资源文件复制移动至目标文件夹中备用。
openssl-1.1-fit.tar.gz
执行[tar -xzvf openssl-1.1-fit.tar.gz]指令解压文件夹;
执行[cd openssl-1.1-fit]指令进入openssl-1.1-fit文件夹;
执行[./config]指令进行配置;
执行[make]指令进行编译;
执行[make install]指令进行安装。
安装完成后,在openssl-1.1-fit文件夹下,找到第三/四个整合资源文件libssl.a和libcrypto.a。执行[cp -r libssl.a /usr/local/ffmpeg-metartc-main/FFmpeg-n4.3.3/metartc5/libssl.a]和[cp -r libcrypto.a /usr/local/ffmpeg-metartc-main/FFmpeg-n4.3.3/metartc5/libcrypto.a]指令将整合资源文件复制移动至目标文件夹中备用。
speexdsp-SpeexDSP-1.2.0.tar.gz
执行[tar -xzvf speexdsp-SpeexDSP-1.2.0.tar.gz]指令解压文件夹;
执行[cd speexdsp-SpeexDSP-1.2.0]指令进入openssl-1.1-fit文件夹;
执行[./autogen.sh]指令生成配置/编译/安装的可执行文件,否则无法执行后续指令;
执行[./configure]指令进行配置;
执行[make]指令进行编译;
执行[make install]指令进行安装。
安装完成后,在speexdsp-SpeexDSP-1.2.0文件夹下,执行[cd ./libspeexdsp/.libs]指令进入.libs文件夹,找到最后一个整合资源文件libspeexdsp.a。执行[cp -r libspeexdsp.a /usr/local/ffmpeg-metartc-main/FFmpeg-n4.3.3/metartc5/libspeexdsp.a]指令将整合资源文件复制移动至目标文件夹中备用。
至此,所有的配置准备工作完成。
配置
执行[cd /usr/local/ffmpeg-metartc-main/FFmpeg-n4.3.3]指令进入FFmpeg-n4.3.3文件夹,执行[./configure --enable-libx264 --enable-gpl --extra-libs=‘-L/usr/local/ffmpeg-metartc-main/FFmpeg-n4.3.3/metartc5 -lmetartccore5 -lpthread -lspeexdsp -lsrtp2 -lssl -lcrypto -ldl’]指令对FFmpeg进行配置。注意:如果自定义了目标文件夹则要将指令中的整合资源文件路径修改为自定义目标文件夹的位置。
编译/安装
执行[make]指令进行编译,编译时间较长,请耐心等待。
执行[make install]指令进行安装。
推/拉流
// 推流指令
ffmpeg … -f webrtc webrtc://192.168.0.1:1985/live/livestream
ffmpeg … -f webrtc webrtc://192.168.0.1/live/livestream
// 拉流指令
ffplay webrtc://192.168.0.1:1985/live/livestream
ffplay webrtc://192.168.0.1/live/livestream
检查
在FFmpeg-n4.3.3文件夹下执行[./ffmpeg -version]指令检查是否安装成功。