SciTech-EECS-FFmpeg开发笔记(六十七)《FFmpeg开发实战:从零基础到短视频上线》: 给FFmpeg集成支持RIST协议的librist
SciTech-EECS-FFmpeg开发笔记(六十七)
- FFmpeg开发笔记(61): Linux给FFmpeg集成H.266编码器vvenc 05-25
- FFmpeg开发笔记(62): Windows给FFmpeg集成H.266编码器vvenc 06-02
- FFmpeg开发笔记(63): FFmpeg使用vvenc把视频转为H.266编码 06-07
- FFmpeg开发笔记(64): 使用国产的RedPlayer播放器观看网络视频 06-08
- FFmpeg开发笔记(65): Linux给FFmpeg集成LC3音频的编码器liblc3 06-14
- FFmpeg开发笔记(66): Windows给FFmpeg集成LC3音频的编码器liblc3 06-15
- FFmpeg开发笔记(67): Windows给FFmpeg集成支持RIST协议的librist 06-21
Windows给FFmpeg集成支持RIST协议的librist
《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2 FFmpeg推流和拉流”提到,
- SRT和RIST 是 比以往常用的 RTSP和RTMP 更新的两种的常用流媒体协议。
- SRT全称为Secure Reliable Transport,中文叫做安全可靠传输协议。
- RIST全称为Reliable Internet Stream Transport,中文叫做可靠的互联网流传输协议。
- SRT和RIST两个协议均在2017年发布,腾讯视频云已将SRT作为传输层之上的协议。
根据腾讯视频云的实践,相比传统的RTMP直播协议,SRT对推流卡顿问题有明显改善。
接下来以微软Windows系统为例,介绍如何在Windows给FFmpeg集成支持RIST协议的librist.
一、配置librist
librist是一款RIST协议的支持库。它的源码托管页面在:
https://code.videolan.org/rist/librist,最新版本是2024年11月发布的librist-v0.2.11,该版本的源码包,
下载地址: https://code.videolan.org/rist/librist/-/archive/v.0.2.11/librist-v.0.2.11.tar.gz。
librist的配置步骤说明如下。
- 安装编译工具meson和ninja
meson和ninja是基于Python语言的编译工具,确保Windows系统已经安装了Python3。
另外,还要按照《FFmpeg开发实战:从零基础到短视频上线》第一章的“1.3.2 安装依赖的Windows软件”,
给电脑安装Visual Studio 2022。
接着依次选择Windows开始菜单的“Visual Studio 2022”→“x64 Native Tools Command Prompt for VS 2022”,
打开Visual Studio 2022的命令行界面,执行以下命令安装meson和ninja。
pip3 install meson ninja - 使用meson配置librist
先下载最新的librist源码,解压下载后的源码包,再从Visual Studio 2022的命令行进入librist源码目录:
cd librist-v.0.2.11
然后运行下面命令生成librist的VS工程:
meson setup build --buildtype=release --backend=vs
配置完成后,librist源码目录下出现build目录,便是meson给librist生成的VS工程。
二、编译librist
- 打开librist工程: 打开Visual Studio 2022,在欢迎页面单击右侧的“打开项目或解决方案”,
在弹出的文件对话框中选择librist-v.0.2.11\build目录下的libRIST.sln。 - 打开librist工程后,依次选择顶部菜单:生成→生成→生成librist,Visual Studio就开始编译librist模块。
编译过程可在Visual Studio界面下方观察,直到编译完成如下图所示。
![]()
此时可在librist-v.0.2.11\build目录下找到librist.lib和librist.dll,这两个文件就是编译生成的librist库文件。
三、安装librist
确保Windows系统已经按照《FFmpeg开发实战:从零基础到短视频上线》第一章“1.3 Windows系统安装FFmpeg”的说明安装配置了MSYS,再按照以下步骤在MSYS环境安装librist。
- 在msys64的/usr/local目录下新建librist目录,并在该目录下创建lib子目录;
- 把librist工程中build目录下的librist.lib和librist.dll两个文件复制到第一步创建的lib目录;
- 在lib目录下创建pkgconfig子目录,并把librist工程的
build\meson-private\librist.pc复制到pkgconfig目录;
然后打开librist.pc,把开头一行改成:prefix=/usr/local/librist
4、把librist工程的include目录复制到msys64的/usr/local/librist目录,把build\include\librist目录复制到msys64的/usr/local/librist/include目录;
经过以上步骤操作后的librist目录结构如下所示。
/usr/local/librist
|--------------- lib
| |----- librist.lib
| |----- librist.dll
| |----- pkgconfig
| |----- librist.pc
|--------------- include
| |----- librist
| |----- librist.h
| |----- librist_config.h
| |----- ……
四、编译安装FFmpeg
- 先下载最新的FFmpeg源码(版本号需大于等于7.1),
后把FFmpeg源码包复制到MSYS环境的/usr/local/src目录下。
接着在MSYS控制台执行下面命令解压源码包:cd /usr/local/src && unzip ffmpeg-n7.1.1.zip - 确保MSYS环境已经按照《FFmpeg开发实战:从零基础到短视频上线》该书:
第八章的“8.1.1 给FFmpeg集成x264”和“8.1.5 给FFmpeg集成x265”安装了H.264/H.265编码器libx264/libx265,
第十章的“10.1.1 FFmpeg集成SDL”安装了Windows系统的SDL2库,
并且按照之前的文章安装了H.266的编码器libvvenc, - 执行下面命令配置FFmpeg的编译环境:
cd ffmpeg-n7.1.1
export PKG_CONFIG_PATH=/usr/local/librist/lib/pkgconfig:$PKG_CONFIG_PATH
./configure --prefix=/usr/local/ffmpeg --arch=x86_64 --enable-shared --disable-static --disable-doc --enable-libx264 --enable-libx265 --enable-libvvenc --enable-liblc3 --enable-librist --enable-sdl2 --enable-gpl --enable-nonfree --enable-iconv --enable-zlib --cross-prefix=x86_64-w64-mingw32- --target-os=mingw32 - 配置完毕执行下面命令编译和安装FFmpeg,
编译完成的ffmpeg库将会安装到configure指定的/usr/local/ffmpeg目录。
make && make install && cp /usr/local/librist/lib/librist.dll /usr/local/ffmpeg/bin
五、查看FFmpeg的安装结果
运行下面命令查看FFmpeg的安装版本:ffmpeg -version
上面命令返回的FFmpeg版本信息如下:
ffmpeg version 7.1.1 Copyright (c) 2000-2025 the FFmpeg developers
built with gcc 12.2.0 (Rev10, Built by MSYS2 project)
configuration: --prefix=/usr/local/ffmpeg --arch=x86_64 --enable-shared --disable-static --disable-doc --enable-libx264 --enable-libx265 --enable-libvvenc --enable-liblc3 --enable-librist --enable-sdl2 --enable-gpl --enable-nonfree --enable-iconv --enable-zlib --cross-prefix=x86_64-w64-mingw32- --target-os=mingw32
libavutil 59. 39.100 / 59. 39.100
libavcodec 61. 19.101 / 61. 19.101
libavformat 61. 7.100 / 61. 7.100
libavdevice 61. 3.100 / 61. 3.100
libavfilter 10. 4.100 / 10. 4.100
libswscale 8. 3.100 / 8. 3.100
libswresample 5. 3.100 / 5. 3.100
libpostproc 58. 3.100 / 58. 3.100
根据以上的版本信息,可知已安装的FFmpeg版本号为7.1.1,
同时configuration这行找到“--enable-librist”,证明FFmpeg已经启用了支持RIST协议的librist。
更多详细的FFmpeg开发知识参见: [《FFmpeg开发实战:从零基础到短视频上线》](https://item.jd.com/14020415.html)


浙公网安备 33010602011771号