一次RTMP的实践

RTMP使用笔记(一):解析使用wireshark抓取的RTMP协议包_wireshark rtmp RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。Adobe的实时消息传递协议(RTMP)通过可靠的流传输提供双向消息多路复用服务,例如TCP [RFC0793],用于在一对通信对等体之间携带具有相关定时信息的视频,音频和数据消息的并行流。 阅读详情

之前在理解音视频的过程中
学习了落影的文集,能够理解直播传输的每个部分,
从摄像头获取视频,麦克风获取音频,视频硬编码为H264,音频硬编码为AAC
再推流到服务器去,服务器有推流使用的协议,推流需要按照协议来推
播放端从服务器拉流,拉流也要遵照服务器的协议啦进行拉流。拉流下来的
数据是H264 和aac 硬解码为 一帧一帧的数据用openGL绘制出来,aac的音频
转换为pcm 然后放入音频缓冲中播放

文集中主要是对这些过程进行了一一分解。转换也只是转换为文件。或者再把文件转换为流,真实的直播过程是一边转 一边传输,其实要求的是 流的转换与展示。于是又找了摄像头捕捉,转换为H264,转换成帧的时候就直接传出来 通过OPENGL绘制在视图上

然后就是需要考虑无音频 有视频 音频和视频都有的时候。音视频同步的问题。人听到音频一般都是连续不断的。所以都会以音频为主,视频为辅,音频接收到数据的时候,把时间戳传给视频播放层,视频播放数据的时间戳小于或者等于音频时间戳的部分,就正常播放,其他就不做操作。保证视频和音频对的上。当视频数据缓冲大于30帧的时候,一直没有收到音频的代理回应,就认为没有音频。将时间戳置空,就会播放无音频的处理。无音频情况下,是不需要视频时间戳等待的,就拿到一帧buffer 就传给openGL的View,就能够实时显示了。等到再接收到音频数据,就又会进入音视频同步的状态。这部分是公司的经验

除此之外。视频的推拉流也有许多协议。比如TUTK的方案,还有直播流标准的RTMP/HLS方案,像tutk的协议是C写的,拿到的数据是H264 的buffer 和pcm。
就直接解析播放的部分即可, HLS 是苹果的点播技术,因为分片的原因和HTTP一个通道。不会被墙。RTMP则是广泛应用的直播技术方案,是Adobe公司提供的。但是Adobe公司并没有完全开源协议。

然后我就想尝试推流一下,结果很难找到相关文章。
后来找到了雷神的文章。ffmpeg的ios编译是网上随便找的,集成好了不要忘了包含头文件就可以了。然后就是雷神的文章主要有rtmp的推流部分,所以就尝试了集成进去,也能成功。只要关注最下面的oc代码,其他的不是很重要。RTMp的本地服务器的搭建,参考的是一篇简书的文章。

目前ios端的大部分应用都是采用的第三方来做这件事。LFLiveKit.(推流、硬编、软编) + HLS/RTMP/RTSP(协议)+ijkplayer(拉流-硬解、软解、播放)+GPUImage(美颜)

于是推流就变成了加一行推流网址的事,拉流也变成了加一行网址的事情,美颜也是一件美颜化的,这样不是不好,可以让程序员更多的功夫花费在业务逻辑上,去写送个礼物,刷个弹幕,来个特效什么的。但这样的弊端也很明显,就是无法了解直播的原理和本质。像 LFLiveKit.和ijkplayer 都是需要编译的 里面还包含了ffmpeg,还有看不见源码的静态库,要是公司不采用这套方案,要你自己写其中的一部分,就只能GG 了。还有一些要优化的细节,要怎么处理,那也只能GG了。

所以掌握并理解直播的整个流程才是最关键的。硬解也好,软解也好,都要自己去调,自己去试,掌握了传输的话,换协议也能做。不然就始终只能做一个api调用者罢了。

拉流部分我找了挺久也没找到,相关文章也没看到。后来在github上翻了挺久,发现了这篇全开源的的rtmp流源码,还有他的文章博客,确实是完全开源的,从推流到拉流都是全的。我试了一下把流推到本地服务器并用VLC播放完全没问题,然后拉了他自带的视频,也是非常出彩。
后续就研究一下他的代码,逐字逐句的分析他的代码,争取尽快掌握这些内容。

FFMPEG 之 RTMP 二 一 简介 上接《FFMPEG 之 RTMP 一》,讲解关于RTMP 协议相关的知识。本文讲解在FFMPEG 中是如何对RTMP 协议进行封装的,相关代码位于rtmproto.c 中,在rtmproto.c 中,它封装了RTMP 协议,相比与librtmp.c 要复杂很多, 前者是对TCP 协议的封装, 后者乃是直接对librtmp.so 的封装。 如下函数乃是开给使用者的API, 我们将以此为切入点,对rtmproto.c 进行分析。 const URLProtocol ff_##flavo... 阅读详情

相关推荐

qt 实现RTMP拉流并实时显示视频流(附完整源码)

qt 实现RTMP拉流并实时显示视频流(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1120

实战之RTMP服务器开发(对接OBS和VLC)

本课程通过实战一行一行的编写一个RTMP直播服务器,最终实现OBS直播推流给本服务器,然后VLC拉流进行播放,通过学习本课程,对于RTMP协议推流拉流不再是难题,学会怎么通过抓包分析各种协议。

Nginx RTMP模块详解与应用实践

RTMP(Real-Time Messaging Protocol)是一种由Adobe公司开发的网络流媒体传输协议,用于在Flash Player和服务器之间进行高效稳定的音视频数据传输。RTMP协议主要通过TCP或HTTP协议进行连接,采用小包传输和连续帧的方式,保证了流媒体数据的实时性和同步性。RTMP的工作原理可以概括为以下几个步骤:连接建立:客户端与服务器建立一个基于TCP的长连接。握手:通过RTMP协议的握手机制,客户端和服务器交换必要的信息以建立会话。数据传输。

weixin_36047538的博客 745

Qt/C++编写跨平台RTSP/RTMP/HTTP视频流播放器

很早以前就做过这款播放器的入门版本,最开始用的ffmpeg去解析,后面陆续用vlc播放器、mpv播放器来做,毕竟播放器提供的接口使用也很方便,而且功能强大,后面发现播放器主要的应用场景是播放视频文件,一般一个电脑不会超过8路视频文件同时播放器,一般就是1路,所有如果需要打开超过16路这种的实例进行播放,用播放器的内核其实是不大适合的,内存占用比较高,超过12路很容易崩溃,哪怕仅仅是播放本地视频文件,所以后面花了精力专门把ffmpeg研究透一些,以便追求极致最大性能,而且其他平台和系统都可以用,只要编译对应环

Qt/C++视频监控/推流/物联网/大屏系统/自定义控件/UI定制/输入法 4640

Qt+FFmpeg实现RTMP流媒体播放器

运用Qt框架+FFmpeg音视频解码库实现RTMP流媒体播放器,通过实时拉流视频流传到界面进行视频显示

windows系统下基于FFMPEG+QT设计的rtmp流媒体播放器_v1.0版本

这是在windows下使用QT+FFMEG设计的拉流软件,可以拉取流媒体的视频和音频数据进行播放。 源码地址:https://blog.youkuaiyun.com/xiaolong1126626497/article/details/105412560?utm_source=app

librtmp & rtmpdump开源项目github

1.librtmp https://github.com/yixia/librtmp/tree/master/librtmp 2.rtmpdump https://github.com/shishuo365/librtmp-android https://github.com/shishuo365/librtmp-android/blob/master/jni/

STN_LCD的专栏 3197

【AI 编程工具进阶用法】如何在Cursor、Trae等工具中使用Skills

OpenSkills是一个开源项目,用于在Cursor、Trae等AI编程工具中添加可复用、可组合的"能力模块"。安装流程包括:1)全局安装OpenSkills CLI工具;2)选择安装Anthropic官方Skills到项目或全局;3)创建AGENTS.md文件同步Skills;4)在AI工具中调用Skills。此外还介绍了UI/UX Pro Max Skill项目,通过npm安装后可为AI添加设计能力。这些Skills相当于为AI工具安装"高级技能包"

肌肉金轮的博客 3546

qt 实现RTSP&RTMP拉流,实时显示视频流

最近项目需求,要实现一个rtsp视频流,经过一番了解之后,最后选择两种方式进行测试对比,一个是基于ffmpeg编码实现rtsp拉流,另外一个则是基于VLC开源的qt第三方库,实在github上搜索到的 key: qt vlc。 首先粗略讲下ffmpeg编码怎么实现rtsp拉流呢?没有接触之前,感觉很高深的样子,其实并不然,ffmpeg内部基本都帮你实现了,类似打开摄像头一样的流程,使用avformat_open_...

我不是码农的博客~~~ 7462

ANSYS APDL齿轮建模实战:从渐开线方程到完整3D模型的保姆级教程

本文详细介绍了使用ANSYS APDL进行齿轮建模的全过程,从渐开线方程的数学基础到完整3D模型的创建。通过参数化命令流实现高精度齿轮建模,特别适合机械设计和仿真分析需求。教程包含关键参数计算、APDL环境配置、单齿齿廓建模以及全齿轮阵列复制等实用技巧,帮助工程师快速掌握ANSYS APDL在齿轮建模中的应用。

lg888的博客 447

TCS34725颜色识别模块实战调校:从“一坨”例程到精准RGB

本文针对TCS34725颜色识别模块初始数据不准的问题,提供了从基础例程到精准调校的实战指南。核心在于通过白光校正与黑白光校正两种方法,补偿传感器偏差与环境光影响,将原始数据准确映射为标准RGB值。文章详细阐述了校准原理、操作步骤与代码实现,并分享了进阶调试技巧与避坑指南,帮助开发者显著提升颜色识别的准确性与项目可靠性。

weixin_29188043的博客 289

obs-multi-rtmp 多平台直播实战:一次编码同步推三个平台

周五晚上你正在 B 站开播,又想把同一场直播同步到 YouTube 和 Twitch,却不想开三个 OBS 窗口。obs-multi-rtmp 是一款免费的 OBS 多路推流插件:为每个平台配好推流目标,点一次「全部开始」,画面就送去了所有平台。这篇讲安装和配置第一个推流目标的完整流程,适合没接触过多平台直播的主播。 ## 一、准备环境与安装 动手前先确认三件事: - OBS Studio

gitblog_00778的博客 133

基于航天宏图PIE-SAR软件的高分三号(GF-3)SAR影像的预处理

软件官网 航天宏图—国内领先的卫星运营与应用服务提供商(官网) 一、数据导入 数据导入-GF-3-根据模式选择 参数文件导入解压后GF-3数据的XML文件 通道自动填充 设置输出目录 确定 等待,加载图像、自动构建金字塔 二、复数数据转换 强度/幅度特征是SAR影像最主要的特征之一,基于SAR强度/幅度影像可以提取地物目标信息,因此需要将SAR复数数据转换为SAR强度/幅度数据。导入输入影像,设置参数类型,输出目录、命名、类型; 漫长的等待 三、多视 为提...

weixin_52127098的博客 9004

OBS多平台直播终极教程:obs-multi-rtmp插件如何一键推流到多个平台

你是否曾想过,一次直播就能覆盖B站、YouTube、抖音等多个平台,但又被复杂的操作和高昂的硬件要求吓退?obs-multi-rtmp这款免费开源插件正是解决这一痛点的完美方案。它能让你在OBS中实现**多平台同时直播**,无需重复编码,极大节省系统资源。本文将为你提供完整的安装配置指南,让你快速掌握这款强大工具的核心用法。 ## 🎯 为什么你需要多平台直播解决方案 在内容创作时代,观众分散

gitblog_00569的博客 464

动力学约束下的运动规划算法——Hybrid A*算法(附程序实现及详细解释)

本文主要介绍动力学约束下的运动规划算法中非常经典的Hybrid A*算法,大致分为三部分,第一部分是在传统A * 算法的基础上,对Hybrid A * 算法的原理、流程进行理论介绍。第二部分是详细分析 MotionPlanning运动规划库中Hybrid A * 算法的源码,进一步深入对Hybrid A * 算法的具体细节 进行理解。 第三部分是结合前面第一部分的理论和第二部分的详细源码,对Hybrid A * 算法的流程进行综合的概括总结。

慕羽★的博客 1万+

【Matlab】从零开始掌握 MATLAB 安装激活:从环境搭建到问题解决全指南

打开 MATLAB,点击 “主页 - 设置路径”;点击 “添加文件夹”,选择自定义的工作文件夹,点击 “保存”,重启 MATLAB 生效。MATLAB R2024a 的安装与激活是开启 MATLAB 学习的第一步,也是构建稳定学习环境的基础。本文从安装前准备、分步操作、验证测试、问题解决到环境优化,完整覆盖了新手所需的所有知识点 —— 核心要点在于:确认系统兼容、使用合法授权、选择纯英文安装路径、完成功能验证。

unber的博客 596

OBS 多平台推流完整指南:用 obs-multi-rtmp 一次推流到 3 个平台

一个 RTMP 地址、一把密钥,往往只能在一个平台开播。obs-multi-rtmp 是免费的 OBS 多平台推流插件(多路推流插件),让你把同一份画面和声音同时送到 YouTube、Twitch、B站等多个站点,整体一键开停。管理多个直播渠道的内容创作者,值得把它装上。 ## 安装 obs-multi-rtmp:把插件装进 OBS ### 动手前先核对三样东西 - **OBS 版本**:插

gitblog_01180的博客 104

(十一)随机性与独立性回顾

随机性与独立性回顾

旺旺的碎冰冰~的博客 1018

一次编码、多平台直播:用 obs-multi-rtmp 让 OBS 同时推流多个平台

obs-multi-rtmp 是一款装进 OBS 的插件,让视频与音频一次编码、多平台同步直播到 YouTube、Bilibili、Twitch 等多个目标。本文覆盖安装步骤、多路推流配置与推流卡顿排查。 ## 先看最终形态:多路推流面板长这样 装好插件后,OBS 内多出一个多路推流面板。每个推流目标占一行,可独立点「开始 / 停止」;勾选「同步启动 / 同步停止」后,所有目标随 OBS 主界

gitblog_01085的博客 77

ERROR conda.core.link:_execute(502): error occurred while installing conda-forge::setuptools 解决方案

本文主要介绍了ERROR conda.core.link:_execute(502): An error occurred while installing package mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge::setuptools-65.5.1-pyhd8ed1ab_0.FileNotFoundError(2, 系统找不到指定的文件。, None, 2) 解决方案,希望能对新手有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 8万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

从一次线上直播事故复盘:我们如何用Docker+nginx-rtmp快速搭建应急推流备份服务器

本文详细复盘了一次线上直播事故的应急处理过程,介绍了如何利用Docker和nginx-rtmp在76秒内快速搭建RTMP备份推流服务器。通过实战案例和技术方案解析,展示了Docker化部署的高效性和可靠性,为直播流中断提供了标准化应急解决方案。

weixin_30872337的博客 372

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

终极指南:如何用obs-multi-rtmp插件实现一次编码多平台直播

你是否曾经为了同时在Bilibili、YouTube、Twitch等多个平台直播而手忙脚乱?每次直播都要反复设置不同的推流参数,运行多个OBS实例,不仅操作繁琐还消耗大量系统资源?今天我要为你介绍一个革命性的解决方案——obs-multi-rtmp插件,这款免费开源的OBS Studio插件能让你一次编码就实现多平台同步直播,彻底改变你的直播工作流程。 ## 为什么你需要这个多平台直播神器?

gitblog_00522的博客 197

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

RTMP协议详解

详细介绍rtmp协议的封装格式、命令消息及传输过程

weixin_39399492的博客 1万+

rtmp测试地址_视频RTMP推流实践

对应RTMP推流,业界有很多开源方案。如使用ffmpeg推流,librtmp(rtmp-dump),gstream推流。由于ffmpeg和gstreamer比较庞大,仅仅用来推流,有大炮打蚊子之嫌。针对客户端特别是瘦客户端,使用librtmp(rtmp-dump)方案更加精简,更加高效。本方案基本思路:1.下载并编译librtmp。1下载地址:http://rtmpdump.mplaye...

weixin_39530960的博客 5480

【RTMP】RTMP协议的详细介绍

本文参考RTMP官方文档,详细介绍了rtmp协议;

m0_54984588的博客 2466

rtsp转rtmp的最佳实践过程

项目需求 现有某幼儿园工地现场,现场采用的是普通的家用拨号上网宽带,内部采用的是IPC摄像机+NVR硬盘录像机的组合完成传统的视频安防监控需求,现在需要将整个幼儿园工地现场实时直播到互联网,以备上级领导和家长随时观看现场情况。 需求分解 其实上述是典型的传统安防互联网化的需求,IPC或者NVR基本上都支持RTSP流输出,而互联网直播云服务大部分都支持的是RTMP推流输入,那么我们实际要做的就是将IPC或者NVR的RTSP流转成RTMP流推送到公有云的直播地址,简而言之就是RTSP转RTMP; 最佳实践 一、

Babosa的专栏 3255
上一篇: 一次头脑风暴
下一篇: 一次组件化的实践
csdn_Damon
博客等级 码龄10年 37粉丝 143原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值