《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2 FFmpeg推流和拉流”提到直播行业存在RTSP和RTMP两种常见的流媒体协议。除此以外,还有比较两种比较新的流媒体协议,分别是SRT和RIST。
其中SRT全称为Secure Reliable Transport,中文叫做安全可靠传输协议。RIST全称为Reliable Internet Stream Transport,中文叫做可靠的互联网流传输协议。SRT和RIST两个协议均在2017年发布,腾讯视频云已将SRT作为传输层之上的协议。根据腾讯视频云的实践,相比传统的RTMP直播协议,SRT对推流卡顿问题有明显改善。下面就介绍如何在Linux环境给FFmpeg集成SRT协议的支持库libsrt,以及RIST协议的支持库librist。
一、安装libsrt
libsrt是一款SRT协议的支持库。它的源码托管页面是 https://github.com/Haivision/srt ,最新版本是2023年8月发布的libsrt-1.5.3,该版本的源码包下载地址是 https://github.com/Haivision/srt/archive/refs/tags/v1.5.3.tar.gz 。
libsrt的安装步骤说明如下。
1、将下载好的压缩包上传到服务器并解压,也就是依次执行以下命令。
cd /usr/local/src
tar zxvf srt-1.5.3.tar.gz
2、进入解压后的srt目录,运行下面命令配置libsrt。
cd srt-1.5.3
./configure
3、运行下面命令编译libsrt。
make -j4
4、编译完成后,运行下面命令安装libsrt。
make install
二、安装librist
librist是一款RIST协议的支持库。它的源码托管页面在 https://code.videolan.org/rist/librist,最新版本是2023年10月发布的librist-v0.2.10 ,该版本的源码包下载地址是 https://code.videolan.org/rist/librist/-/archive/v0.2.10/librist-v0.2.10.tar.gz 。
librist的安装步骤说明如下。
1、安装编译工具meson和ninja
这两个工具已经在之前libdav1d的安装过程中安装了,这里不再赘述。
2、将下载好的压缩包上传到服务器并解压,也就是依次执行以下命令。
cd /usr/local/src
tar zxvf librist-v0.2.10.tar.gz
cd librist-v0.2.10
3、进入解压后的build目录,运行下面命令配置librist。
mkdir build
cd build
meson setup
4、运行下面命令编译librist。
ninja
5、编译完成后,运行下面命令安装librist。
ninja install
三、启用libsrt和librist
由于FFmpeg默认未启用libsrt和librist,因此需要重新配置FFmpeg,标明启用libsrt和librist,然后重新编译安装FFmpeg。FFmpeg的Linux环境完整编译过程参见《FFmpeg开发实战:从零基础到短视频上线》一书的“1.2.3 自行编译与安装FFmpeg”,详细的启用步骤说明如下。
1、回到FFmpeg源码的目录,执行以下命令重新配置FFmpeg,主要增加启用libsrt和librist。(增加了选项“ --enable-libsrt --enable-librist”)
./configure --prefix=/usr/local/ffmpeg --enable-shared --disable-static --disable-doc --enable-zlib --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libdavs2 --enable-libmp3lame --enable-libfreetype --enable-libass --enable-libfribidi --enable-libxml2 --enable-fontconfig --enable-sdl2 --enable-libvorbis --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-libopus --enable-libvpx --enable-openssl --enable-libaom --enable-libsvtav1 --enable-libdav1d --enable-libuavs3d --enable-libwebp --enable-libxvid --enable-libsrt --enable-librist --enable-iconv --enable-gpl --enable-nonfree
2、运行下面命令编译FFmpeg。
make clean
make -j4
3、执行下面命令安装FFmpeg。
make install
4、运行以下命令查看FFmpeg的版本信息。
ffmpeg -version
查看控制台回显的FFmpeg版本信息,找到“ --enable-libsrt --enable-librist”,说明FFmpeg正确启用了SRT协议的支持库libsrt,以及RIST协议的支持库librist。
更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。