FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist
《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开发实战:从零基础到短视频上线》一书。
FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist的更多相关文章
- FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台
FFmpeg和SDL开发专栏(点击传送门) 上一篇:<FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放>下一篇:敬请期待 前言 将ffmpeg移植到海思H ...
- 树莓派开发笔记(十四):入手研华ADVANTECH工控树莓派UNO-220套件(三):使用研发自带系统测试rtc、gpio、232和485套件接口
前言 上一篇说明了必须要使用研华自带的8G卡的系统,通过沟通拿到了相关的系统,购买的时候会带8GB的卡,请自行备份一份镜像.本篇对uno-220套件的相关研华配套的额外接口做测试,篇幅较长,重点讲 ...
- BizTalk开发系列(三十四) Xpath
XPath 是在 XML 文档中查找信息的语言,在BizTalk的开发中应用非常广泛,当然你可以不必先学Xpath再去学BizTalk.但是如果对Xpath有一定了解的 话,在很多应用下会使你的开发更 ...
- Java开发笔记(十四)几种运算符的优先级顺序
到目前为止,我们已经学习了Java语言的好几种运算符,包括算术运算符.赋值运算符.逻辑运算符.关系运算符等基础运算符,并且在书写赋值语句时都没添加圆括号,显然是默认了先完成算术.逻辑.关系等运算,最后 ...
- Android笔记三十四.Service综合实例二
综合实例2:client訪问远程Service服务 实现:通过一个button来获取远程Service的状态,并显示在两个文本框中. 思路:如果A应用须要与B应用进行通信,调用B应用中的getName ...
- .Net开发笔记(十四) 基于“泵”的UDP通信(接上篇)
上一篇中说到了“泵”在编程中的作用以及一些具体用处,但没有实际demo,可能不好理解,这篇文章我分享一个UDP通信的demo,大概实现了类似“飞鸽传书”在局域网中文本消息和文件传输的功能.功能不全也不 ...
- Android UI开发第三十四篇——SlidingPaneLayout
SlidingPaneLayout也是系统支持的高级控件,是Android团对在2013 google IO大会期间更新的Support库(Version 13)中新加入的重要的功能.它支持左右滑动菜 ...
- 网站开发进阶(三十四)编码中的setCharacterEncoding 理解
编码中的setCharacterEncoding 理解 1.pageEncoding="UTF-8"的作用是设置JSP编译成Servlet时使用的编码. 2.contentType ...
- tensorflow学习笔记(三十四):Saver(保存与加载模型)
Savertensorflow 中的 Saver 对象是用于 参数保存和恢复的.如何使用呢? 这里介绍了一些基本的用法. 官网中给出了这么一个例子: v1 = tf.Variable(..., nam ...
- Java开发学习(三十四)----Maven私服(二)本地仓库访问私服配置与私服资源上传下载
一.本地仓库访问私服配置 我们通过IDEA将开发的模块上传到私服,中间是要经过本地Maven的 本地Maven需要知道私服的访问地址以及私服访问的用户名和密码 私服中的仓库很多,Maven最终要把资源 ...
随机推荐
- 【YoloDeployCsharp】基于.NET Framework的YOLO深度学习模型部署测试平台
1. 项目介绍 基于.NET Framework 4.8 开发的深度学习模型部署测试平台,提供了YOLO框架的主流系列模型,包括YOLOv8~v9,以及其系列下的Det.Seg.Pose.Obb ...
- Go-Zero技能提升:深度探究goctl的妙用,轻松应对微服务开发挑战!(三)
前言 有位同学在群里说:"Go-Zero官方文档太简洁了,对小白有点不友好.好奇你们是怎么学习的?项目是怎么封装的?有什么提高开发效率的技巧吗?". 来来来,这期内容给你安排上,先 ...
- thinkphp5 关于跨域的一些坑,附上解决办法(比较全面了)
项目背景:前端是uniapp开发的h5,后端是tp5,其他语言我觉得应该大同小异,主要是思路,本文就以这俩为例吧 1.首先在tp5的入口文件:public/index.php 在里面添加三行: // ...
- Rust 错误处理
rust 处理错误,不使用 try catch, 而是使用 Result<T, E>. 简单的处理rust错误 在各种关于rust错误处理的文档中,为了解释清楚其背后的机制,看着内容很多, ...
- 使用IIS部署WebDAV
服务器开启WebDAV 在服务器安装IIS的同时 要启用Windows身份验证与WebDAV发布 如果不是服务器版本,参照下图 在IIS中新建WebDAV网站 配置好本地目录与端口 启用Windows ...
- 用.NET代码生成JSON Schema 验证器
问题 对于验证复杂JSON数据是否合法的需求,通常的解决方式是标准JSON Schema,.Net下有对应的JSON Schema实现库.应用程序通常需要将标准JSON schema传入实现库,来做后 ...
- 抖音越狱版本App下载
一.准备下载越狱版本抖音App 一般下载越狱版本App要不从越狱手机上Crack 正版App,另外一种从PP助手或者越狱市场进行下载,这里选择第二种方式 感谢 http://iosre.com/t/p ...
- .Net Core 部署IIS
我相信很多人看了其他的贴子,都没有成功部署,因为里面有很多暗坑.接下来博主就一步一步给大家讲明白,带领大家部署 先基本的发布 操作:右击web项目的<发布>按钮.选文件 配置发布属性 ...
- SpringBoot系列(一)简介。
概述: Spring Boot 可以简化spring的开发,可以快速创建独立的.产品级的应用程序. 特征: 快速创建独立的 Spring 应用程序 直接嵌入了Tomcat.Jetty或Undertow ...
- C#.NET HTTPS 双向证书 请求被中止: 未能创建 SSL/TLS 安全通道。
请求被中止: 未能创建 SSL/TLS 安全通道. 用mmc 给私钥证书添加Everyone 的权限.