​《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2  FFmpeg推流和拉流”提到直播行业存在RTSP和RTMP两种常见的流媒体协议。除此以外,还有比较两种比较新的流媒体协议,分别是SRT和RIST。

其中SRT全称为Secure Reliable Transport,中文叫做安全可靠传输协议。RIST全称为Reliable Internet Stream Transport,中文叫做可靠的互联网流传输协议。SRT和RIST两个协议均在2017年发布,腾讯视频云已将SRT作为传输层之上的协议。根据腾讯视频云的实践,相比传统的RTMP直播协议,SRT对推流卡顿问题有明显改善。

接下来以微软的视窗系统为例,介绍如何在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的配置步骤说明如下。

1、安装编译工具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
pip3 install ninja

2、使用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

打开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。

1、在msys64的/usr/local目录下新建librist目录,并在该目录下创建lib子目录;

2、把librist工程中build目录下的librist.lib和librist.dll两个文件复制到第一步创建的lib目录;

3、在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的编码器libx264和H.265的编码器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开发实战:从零基础到短视频上线》一书。

FFmpeg开发笔记(六十七)Windows给FFmpeg集成支持RIST协议的librist的更多相关文章

  1. FFmpeg开发笔记(三):ffmpeg介绍、windows编译以及开发环境搭建

    前言   本篇章是对之前windows环境的补充,之前windows的是无需进行编译的,此篇使用源码进行编译,版本就使用3.4.8.   FFmpeg简介   FFmpeg是领先的多媒体框架,能够解码 ...

  2. FFmpeg开发笔记(四):ffmpeg解码的基本流程详解

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  3. FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放

    前言   ffmpeg播放rtsp网络流和摄像头流.   Demo   使用ffmpeg播放局域网rtsp1080p海康摄像头:延迟0.2s,存在马赛克     使用ffmpeg播放网络rtsp文件流 ...

  4. FFmpeg开发笔记(五):ffmpeg解码的基本流程详解(ffmpeg3新解码api)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  5. FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台

    FFmpeg和SDL开发专栏(点击传送门) 上一篇:<FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放>下一篇:敬请期待   前言   将ffmpeg移植到海思H ...

  6. Django开发笔记六

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.登录功能完善 登录成功应该是重定向到首页,而不是转发 ...

  7. FFmpeg开发笔记(二)搭建Windows系统的开发环境

    由于Linux系统比较专业,个人电脑很少安装Linux,反而大都安装Windows系统,因此提高了FFmpeg的学习门槛,毕竟在Windows系统搭建FFmpeg的开发环境还是比较麻烦的.不过若有已经 ...

  8. FFmpeg开发笔记(一)搭建Linux系统的开发环境

    对于初学者来说,如何搭建FFmpeg的开发环境是个不小的拦路虎,因为FFmpeg用到了许多第三方开发包,所以要先编译这些第三方源码,之后才能给FFmpeg集成编译好的第三方库.不过考虑到刚开始仅仅调用 ...

  9. FFmpeg开发实战(一):FFmpeg 打印日志

    在Visual Studio 开发(二):VS 2017配置FFmpeg开发环境一文中,我们配置好了FFmpeg的开发环境,下面我们开始边实战,边学习FFmpeg. 首先,我们要学习的就是FFmpeg ...

  10. FFmpeg开发实战(二):FFmpeg 文件操作

    FFmpeg 提供了丰富的API供我们使用,下面我们来讲述一下文件操作相关的API: FFmpeg 删除文件:avpriv_io_delete() FFmpeg 重命名文件:avpriv_io_mov ...

随机推荐

  1. Oracle 修改SYS、system用户密码

      by:授客 QQ:1033553122 概念 SYS用户是Oracle中权限最高的用户,而SYSTEM是一个用于数据库管理的用户.在数据库安装完之后,应立即修改SYS,SYSTEM这两个用户的密码 ...

  2. storm部署文档

    背景 这篇笔记原来是记录在印象笔记中的,没有发布到博客中,这次我重新整理一下发布上来,希望给读者以参考. Storm的部署手册 Zookeepr的部署 首先下载安装包:apache-zookeeper ...

  3. 《机器人SLAM导航核心技术与实战》前言

    <机器人SLAM导航核心技术与实战>前言 温馨提示: 本篇文章是我最新出版的书籍<机器人SLAM导航核心技术与实战>的前言部分,感兴趣的读者可以购买纸质书籍来进行更加深入和系统 ...

  4. DPDI(Dispatch PDI)kettle调度管理平台升级内容

    DPDI升级内容(20240815版) DPDI online部署方式 定时任务优化(支持轮询机制,Cron可提示近5次运行时间) 运行任务优化(支持多机器分布式运行) 其它小功能优化 1. 首页可手 ...

  5. [python] 基于WatchDog库实现文件系统监控

    Watchdog库是Python中一个用于监控文件系统变化的第三方库.它能够实时监测文件或目录的创建.修改.删除等操作,并在这些事件发生时触发相应的处理逻辑,因此也被称为文件看门狗. Watchdog ...

  6. 代码随想录第二十五天 | Leecode 491. 非递减子序列、46. 全排列、47. 全排列 II

    Leecode 491. 非递减子序列 题目描述 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 .你可以按 任意顺序 返回答案. 数组中可能含有重 ...

  7. Nacos源码—7.Nacos升级gRPC分析二

    大纲 5.服务变动时如何通知订阅的客户端 6.微服务实例信息如何同步集群节点 5.服务变动时如何通知订阅的客户端 (1)服务注册和服务订阅时发布的客户端注册和订阅事件的处理 (2)延迟任务的执行引擎源 ...

  8. TensorFlow 基础 (04)

    最近都面临一个问题是, 要用纯 sql 来实现所有的逻辑, 其实 union 呀, 嵌套, 子查询呀, 这些都还好, 但那带有逻辑判断的, 这就整不好整了, 就多分支的, 再分支这种... 也不知为啥 ...

  9. 代码重构(OOP)-小栗子(PyQt5)

    主要是为了练习下 面向对象, 不断提醒自己代码一定要写成 营销风格, 和优雅. 最近在B站上看一下关于 Python GUI 编程的内容. 恰好呢, 前不久的一个 将本地 Ecxcel 数据 发布到 ...

  10. FastAPI与Alembic:数据库迁移的隐秘艺术

    title: FastAPI与Alembic:数据库迁移的隐秘艺术 date: 2025/05/13 02:02:31 updated: 2025/05/13 02:02:31 author: cmd ...