首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

FFmpeg开发笔记(四十一)结合OBS与MediaMTX实现SRT直播推流

编程知识
2024年07月27日 10:50
《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2  FFmpeg推流和拉流”提到直播行业存在RTSP和RTMP两种常见的流媒体协议。除此以外,还有于2017年推出的SRT协议,相比常见的RTMP协议,SRT协议具有更低的延迟,并且消除了卡帧、抖动等花屏现象。腾讯视频云已经引入了SRT协议,在实践中取得了良好的视频直播效果。

FFmpeg从4.0开始支持集成第三方的libsrt库,该库为SRT协议的支持库。OBS Studio、MediaMTX等开源软件也纷纷支持SRT,国产的两个开源流媒体服务器SRS和ZLMediaKit都支持SRT协议,可见在直播领域SRT取代RTMP已是大势所趋。在本文的直播操作之前,务必确保电脑上的FFmpeg已经集成了libsrt库,详细的集成步骤参见之前的文章《Windows环境给FFmpeg集成libsrt》。
下面就以Windows环境为例,把OBS Studio作为SRT直播的录制推流方,把MediaMTX作为承载SRT直播的流媒体服务器,把ffplay和VLC media player作为SRT直播的拉流播放器,演示看看如何在个人电脑搭建一个从录制到分发到播放的完整SRT直播系统。
首先按照《FFmpeg开发实战:从零基础到短视频上线》一书“10.2.2  FFmpeg向网络推流”的介绍,安装并启动MediaMTX,弹出的MediaMTX日志窗口显示内容如下:

2023/12/10 14:18:25 INF MediaMTX v1.3.0
2023/12/10 14:18:25 INF configuration loaded from E:\Program Files (x86)\mediamtx\mediamtx.yml
2023/12/10 14:18:25 INF [RTSP] listener opened on :8554 (TCP), :8000 (UDP/RTP), :8001 (UDP/RTCP)
2023/12/10 14:18:25 INF [RTMP] listener opened on :1935
2023/12/10 14:18:25 INF [HLS] listener opened on :8888
2023/12/10 14:18:25 INF [WebRTC] listener opened on :8889 (HTTP), :8189 (ICE/UDP)
2023/12/10 14:18:25 INF [SRT] listener opened on :8890 (UDP)

从上面日志可见,MediaMTX提供的SRT服务正在监听8890端口,且该服务采用UDP传输层协议。此时SRT服务的访问地址前缀为srt://127.0.0.1:8890?streamid=xxx,开头的“srt://”表示该地址采用srt协议,后面的“127.0.0.1:8890”为SRT服务的IP和端口号。再后面的“?streamid=xxx”表示SRT服务的流名称,其中xxx为形如“action:path”格式的字符串,冒号前面的action有两个取值,为publish表示推流方,为read表示拉流方;冒号后面的path表示播放地址的路径名称。
接着启动OBS Studio,单击主界面右下角的“设置”按钮,弹出的设置窗口在左边列表选择“直播”,窗口右边的“服务”栏选择“自定义”,“服务器”栏填“srt://127.0.0.1:8890?streamid=publish:live”,如下图所示:

设置好SRT服务器地址后,按照之前文章《使用OBS Studio开启RTMP直播推流》的说明,让OBS Studio开启视频直播推流,观察MediaMTX的服务日志如下所示:

2023/12/10 14:18:59 INF [SRT] [conn 127.0.0.1:50021] opened
2023/12/10 14:19:01 INF [SRT] [conn 127.0.0.1:50021] is publishing to path 'live', 2 tracks (H264, MPEG-4 Audio)

可见MediaMTX的SRT服务正在把推流方的音频流和视频流发布到live路径。
然后按照《FFmpeg开发实战:从零基础到短视频上线》一书“1.3  Windows系统安装FFmpeg”的介绍,在个人电脑上安装FFmpeg并打开MSYS的命令行,运行下面的ffplay命令,期望从SRT地址拉流播放。

ffplay -i 'srt://127.0.0.1:8890?streamid=read:live'

此时ffplay弹出播放器窗口,正常播放视频画面和声音。同时观察MediaMTX的服务日志如下所示:

2023/12/10 14:19:40 INF [SRT] [conn 127.0.0.1:53466] opened
2023/12/10 14:19:40 INF [SRT] [conn 127.0.0.1:53466] is reading from path 'live', 2 tracks (H264, MPEG-4 Audio)

可见作为拉流方的ffplay正在从SRT服务的live路径拉取音频流和视频流,说明MediaMTX通过SRT协议成功实现了视频直播的SRT推拉流功能。
最后打开VLC media player,依次选择菜单:“媒体”——“打开网络串流”,在URL地址栏填入SRT服务的拉流链接“srt://127.0.0.1:8890?streamid=read:live”,单击窗口右下角的播放按钮,即可使用VLC media player播放SRT直播地址了。

更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。

 


From:https://www.cnblogs.com/aqi00/p/18288640
本文地址: http://shuzixingkong.net/article/476
0评论
提交 加载更多评论
其他文章 OpenAI深夜丢炸弹硬杠谷歌搜索
这几年科技变革太快,AI更是飞速发展,作为一名IT老兵,使用过的搜索引擎也是一换再换。这不,刚消停了一段时间的OpenAI又丢出一个炸弹SearchGPT,直接跟谷歌掀桌子了。
OpenAI深夜丢炸弹硬杠谷歌搜索 OpenAI深夜丢炸弹硬杠谷歌搜索
STM32开发环境配置记录——关于PlatformIO + VSCode + CubeMX的集成环境配置
前言 ​ 为什么配置这样的一个环境呢?鄙人受够了Keil5那个简陋的工作环境了,实在是用不下去,调试上很容易跟CubeMX的代码产生不协调导致调试——发布代码不一致造成的一系列问题。CubeIDE虽说不错,但是它的代码辅助功能和构建系统实在不敢恭维,经常出现Makefile未同步导致符号定义冲突,亦
STM32开发环境配置记录——关于PlatformIO + VSCode + CubeMX的集成环境配置 STM32开发环境配置记录——关于PlatformIO + VSCode + CubeMX的集成环境配置 STM32开发环境配置记录——关于PlatformIO + VSCode + CubeMX的集成环境配置
Django模型中的save方法 精讲
两种方法定义在Django模型中的save方法有不同的参数处理方式。 第一种方法: def save(self, *args, **kwargs): super().save(*args, **kwargs) 特点: 使用*args和**kwargs来捕获所有位置参数和关键字参数。 这样的方法可以灵
解锁 SQL Server 2022的时间序列数据功能
解锁 SQL Server 2022的时间序列数据功能 SQL Server2022在处理时间序列数据时,SQL Server 提供了一些优化和功能,比如 DATE_BUCKET 函数、窗口函数(如 FIRST_VALUE 和 LAST_VALUE)以及其他时间日期函数,以便更高效地处理时间序列数据
解锁 SQL Server 2022的时间序列数据功能 解锁 SQL Server 2022的时间序列数据功能 解锁 SQL Server 2022的时间序列数据功能
业务场景---Token无感刷新
业务场景描述 假设用户正在填写一个复杂的表单,由于表单内容繁多,用户花费了很长时间才填完。这时,如果Token已经过期,系统会让用户重新登录,这种体验显然是非常糟糕的。为了避免这种情况,我们需要在Token即将过期或已经过期时,自动刷新Token,而不影响用户正在进行的操作。 技术实现思路 一、准备
不是,大哥,咱这小门小户的,别搞我CDN流量啊
分享是最有效的学习方式。 博客:https://blog.ktdaddy.com/ 最近遇上事儿了,老猫的小小博客网站【程序员老猫的博客】被人盗刷CDN流量了。开始的时候收到了欠费的短信也没有怎么去重视。虽然说费用没有多少,但是也是一个教训。 博客从最初地搭建到现在确实也经过好几年了,天真地以为确实
不是,大哥,咱这小门小户的,别搞我CDN流量啊 不是,大哥,咱这小门小户的,别搞我CDN流量啊 不是,大哥,咱这小门小户的,别搞我CDN流量啊
一款.NET开源、跨平台的DASH/HLS/MSS下载工具
前言 今天大姚给大家分享一款.NET开源(MIT License)、免费、跨平台的DASH/HLS/MSS下载工具,并且支持点播和直播(DASH/HLS)的内容下载:N_m3u8DL-RE。 网络流媒体传输协议介绍 DASH DASH是一种基于HTTP的自适应流媒体网络传输协议,它允许流媒体内容以多
一款.NET开源、跨平台的DASH/HLS/MSS下载工具 一款.NET开源、跨平台的DASH/HLS/MSS下载工具 一款.NET开源、跨平台的DASH/HLS/MSS下载工具
《Programming from the Ground Up》阅读笔记:p88-p94
《Programming from the Ground Up》学习第5天,p88-p94总结,总计7页。 一、技术总结 1.touppercase.s #PURPOSE: This program converts an input file #to an output file with all
《Programming from the Ground Up》阅读笔记:p88-p94