zoukankan      html  css  js  c++  java
  • RTMP协议抓包详解

    Real Time Messaging Protocol(实时消息传送协议协议)是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的私有协议。 我们公司的平台都是采用的这个协议进行的音视频的播放

    RTMP协议是一个基于TCP的高层协议族(所以wireshark抓包的时候应该选择tcp进行抓包)

    在RTMP协议中信令和媒体数据都称之为Message,在网络中传输这些Message,为了区分它们肯定是要加一个Message  head的,所以RTMP协议也有一个Message head,还有一个问题因为RTMP协议是基于TCP的,由于TCP的包长度是有限制的(一般来说不超过1500个字节),而RTMP的Message长度是有可能很大的,像一个视频帧的包可能会有几十甚至几千K,这个问题就必然有一个分片的问题,在RTMP协议中对应的说法就是chunk,每一个Message + head都是由一个和多个chunk组成的。让我们来结合实际例子来看一下 :9see

    这些都是头信息,是用来说明这断data从什么点开始播放用的真正的音视频播放在data里面

    粗略带过。现在从握手开始讲解

    握手流程:

    握手返回的签名

    客户和服务器通信

     

    依次解释一下

    574-发送 rtmp_connect 命令

    576 服务器返回服务器带宽信息,本地所需带宽信息,流开始标记,服务器返回连接成功消息 "NetConnection.Connect.Success"

    577 告诉服务器本带宽信息

    579 设置缓冲区

    578发送创建流请求

    581 服务器返回创建流成功

    584 发送播放文件消息 rtmp_play

    AUDIOdata 解析





    再来解释下一下这个09后面的27

    27(16)=0010 0111(2)

    解读就是

    0010

    0111 代表(7)也就是H.264  代表视频采用H.264编码  这个编码对应的自己查吧~~

    那么,

    问题1.音频是怎么跟视频对齐的呢?

    问题2. 如何根据这些数据来查我们视频的相关信息呢?

    RTMP的包头上有几个参数,

    timestamp delta 直译--数据轴三角洲   就是这段data 所播放的时间

    tunestamp 时间轴 

    视频数据                                                                                                                                               音频数据

                       

    再看看一个参数 body size =1221大小知道了,时间知道,所以码率就可以算出来了  

  • 相关阅读:
    模拟登陆江西理工大学教务系统
    python3爬虫 -----华东交大校园新闻爬取与数据分析
    以selenium模拟登陆12306
    PAT (Basic Level) Practice (中文)1076 Wifi密码 (15 分)
    PAT (Basic Level) Practice (中文)1047 编程团体赛 (20 分)
    PAT (Basic Level) Practice (中文)1029 旧键盘 (20 分)
    PAT (Basic Level) Practice (中文)1016 部分A+B (15 分)
    PAT (Basic Level) Practice (中文)1031 查验身份证 (15 分)
    PAT (Basic Level) Practice (中文)1041 考试座位号 (15 分)
    PAT (Basic Level) Practice (中文)1037 在霍格沃茨找零钱 (20 分)
  • 原文地址:https://www.cnblogs.com/tester-huang/p/4632353.html
Copyright © 2011-2022 走看看