流媒体推拉流实战之RTMP协议分析(BAT面试官推荐)

供稿:hz-xin.com     日期:2025-01-13

1. 环境搭建


提取PCM与yuv文件用于RTMP测试。PCM与yuv文件需自行准备,yuv文件体积庞大,若不再使用,可删除。提取命令如下:



在qt下进行rtmp_play工程时,确保使用了正确编译器,否则可能导致编译失败。


识别头部与数据,根据字段进行区分。


深入理解FLV格式。


详解MP4与TS合成音视频。


RTMP推流具有低延时特性。


注意SDL在子线程预览时可能存在的稳定性问题,先屏蔽界面显示部分,便于调试。


RTMP简介:应用层协议,专为Flash player与服务器间传输音视频、控制命令。


RTMP播放流程:TCP三次握手建立连接,RTMP握手认证,连接建立,创建流,播放/推流命令,删除流。


TCP三次握手完成,客户端与服务器建立可靠网络连接。


创建流后,播放客户端发送“play”命令,服务器响应配置信息。


使用wire分析数据包。


音视频开发资源推荐:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发。


【文章福利】:提供学习资源群文件,需自行添加。


推流流程:TCP与RTMP握手后,推流客户端发送连接控制字,服务器响应带宽等信息。


注意输入rtmpt而非rtmp进行Wireshark抓包。


了解具体包信息与规格。


推流客户端发送服务器rtmp握手c0、c1包,服务器回应s0、s1、s2,客户端再发送c2。


复杂握手包含公共密钥与密文。


连接地址示例:rtmp://192.168.121.31/live/36,应用实例区分功能。


创建流命令用于建立传输通道,返回唯一Stream ID。


play命令启动音视频传输。


deleteStream命令用于删除指定流。


RTMP数据流向分析。


传输流程:消息拆包、网络发送与接收。


发送端:封装数据、拆包传输。


接收端:组包恢复数据。


切包原因:适应网络带宽,防止数据阻塞。


RTMP数据发送流程涉及协议、封装、编码。


RTMP数据接收流程:TCP接收、封装解封装、解码。


消息结构:协议控制、数据与命令消息。


Chunk数据结构:携带不同数据流类型与消息类型。


RTMP Chunk Header长度变长,提供数据效率。


Chunk Stream ID用于区分同一消息。


拆分消息以避免大消息阻塞。


优先级管理:控制消息优先级最高,视频消息优先级最低。


RTMP时间戳单位为毫秒,相对值表示,支持49天17小时2分钟47.296秒范围,时间戳与时间戳差值表示。


在实际项目中,优化时间戳计算以减少帧间隔误差。


文章结束,希望对您有所帮助。



流媒体推拉流实战之RTMP协议分析(BAT面试官推荐)
1. 环境搭建 提取PCM与yuv文件用于RTMP测试。PCM与yuv文件需自行准备,yuv文件体积庞大,若不再使用,可删除。提取命令如下:提取PCM数据:ffmpeg -i xxx.mp3 -ar 48000 -ac 2 -f s16le 48000_2_s16le.pcm提取yuv数据:ffmpeg -i xxx.mp4 -an -c:v rawvideo -pix_fmt yuv420p 720x480_25f...

rtmp协议详解中文版
Message是RTMP协议中基本的数据单元,不同种类的消息包含不同的Message Type ID,代表不同的功能。RTMP协议中一共规定了十多种消息类型,分别发挥着不同的作用。在网络上传输数据时,消息需要被拆分成较小的数据块,才适合在相应的网络环境上传输。RTMP协议中规定,消息在网络上传输时被拆分成消息块(Chu...

RTMP协议分析-chunk格式
总之,RTMP协议的chunk格式是协议内部处理机制,而RTMP Message Format则是应用层面的数据格式,两者在实际操作中有着明确的职责划分。理解这些细节有助于更有效地使用和解析RTMP数据流。

视频直播技术干货:一文读懂主流视频直播系统的推拉流架构、传输协议等...
我们通过使用OBS等流媒体录影程序,对专业设备录制的多路流进行合并,并且将音视频流上传到指定的推流地址。由于OBS推流使用了RTMP协议,因此我们称这一种推流类型为RTMP推流。 我们首先在云直播后台申请到推流地址和秘钥,将推流地址和秘钥配置到OBS软件当中,调整推流各项参数,点击推流以后,OBS就会通过RTMP协议向对应的推流地...

SRS流媒体服务器——基本流程简单分析
12. SrsRtmpConn::do_cycle()函数SrsRtmpConn::do_cycle()函数是rtmp连接协程的循环处理函数,负责rtmp协议的解析、数据分发、错误处理等关键步骤,确保rtmp流媒体服务的正常运行。通过以上详细解析,读者可以全面了解SRS流媒体服务器的基本流程和核心模块,为深入学习和实践SRS流媒体技术打下坚实的基础。

FFmpeg开发笔记(十五)详解MediaMTX的推拉流
验证MediaMTX推拉流功能时,通过编译脚本执行pushvideo与pullvideo命令,分别用于推流与拉流操作。推流时,将文件2018.mp4推送到默认推流地址rtsp:\/\/127.0.0.1:8554\/stream;拉流时,从127.0.0.1:8888+i地址获取视频流并使用SDL窗口播放。测试显示,MediaMTX成功实现HLS协议的流媒体转发,但存在特定的...

rtmp和rtsp的区别
RTMP:(可用于推流端和拉流端)RealTimeMessagingProtocol实时消息传输协议,RTMP协议中,视频必须是H264编码,音频必须是AAC或MP3编码,且多以flv格式封包。p直播协议有三种:RTMP、FLV和HLS。常用的流媒体协议主要有HTTP渐进下载和基于RTSP\/RTP的实时流媒体协议,这二种基本是完全不同的东西,目前比较方便...

抖音推流是什么意思
抖音推流解析:直播技术的核心流程 直播推拉流技术,作为在线视频直播的核心组成部分,它通过流媒体协议(如RTMP)构建起一座桥梁,连接着直播内容的源头与观众的终端。那么,究竟何为“抖音推流”呢?我们来深入探讨一下。在直播的语境中,推流指的是将直播内容从源头传输到目标平台的过程。这...

解密为什么音视频流媒体直播的延迟很高
本文从数据编码、数据传输和多端缓存三个方面解析了流媒体直播端到端延迟高的原因。在正常的直播系统中,使用 RTMP 和 HTTP-FLV 可以达到 3 秒以下的延迟,但 GOP 设置和多端缓存都会影响这一指标,延迟在 10 秒以内是正常的。最后,我们提出一些较为开放的问题供有兴趣的读者深入思考:

跨平台低延迟RTSP转RTMP推送技术方案探讨
8. 拉流速度反馈:利用RTSP播放端的实时码率反馈event,获取实时带宽占用。9. 整体网络状态反馈:通过推拉流的event回调状态,监控网络情况,判断是否拉流失败或RTMP服务器异常。实现此方案有两种技术路径:FFmpeg技术和SDK技术。FFmpeg技术方案中,rtsp:\/\/[摄像头地址]\/[流媒体地址]为摄像头的RTSP流地址,...