码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 流媒体传输 - RTSP Over HTTP


    RTSP 的标准端口是 554,但是由于各种不同的防火墙等安全策略配置的原因,客户端在访问 554 端口时可能存在限制,从而无法正常传输 RTSP 报文。 但是 HTTP 端口(80 端口)是普遍开放的,于是就有了让 RTSP 报文通过 80 端口透传的想法,即 RTSP Over HTTP。

    协议介绍

    RTSP Over HTTP 的关键在于:让 RTSP 报文通过 HTTP 端口通信,但目前 RTSP Over HTTP 没有标准做法,苹果公司出了一份非正式文档公开在外,并且也被 Live555 等支持

    基础知识

    RTSP 和 HTTP

    RTSP (Real Time Streaming Protocol,实时流传输协议) 和 HTTP (HyperText Transfer Protocol,超文本传输协议) 的共同点如下:

    • 两者均为应用层协议
    • 两者均为工作于客户端 - 服务端架构

    两者区别如下:

    • HTTP 协议是无连接(HTTP/1.1 版本之后支持长连接),而 RTSP 为面向连接协议 > 无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。
    • HTTP 协议是无状态协议,而 RTSP 为有状态协议

    协议交互

    Live555 的具体做法如下

    首先客户端开启 2 个 socket 链接服务器 HTTP 端口,我们称这 2 个 socket 分别为 "数据 socket" 和 "命令 socket"。

    1. 客户端通过 "数据 socket" 发送 HTTP GET 命令,请求 RTSP 链接。

    2. 服务器通过 "数据 socket" 响应 HTTP GET 命令,并回复成功 / 失败。

    3. 客户端创建 "命令 socket",并通过 "命令 socket" 发送 HTTP POST 命令,建立 RTSP 会话。

      至此,HTTP 的辅助功能完成,服务器不返回客户端的 HTTP POST 命令。接下来是 RTSP 在 HTTP 端口上的标准流程,但是需要通过 2 个 socket 协同完成,"命令 socket" 只负责发送,"数据 socket" 只负责接受。

    4. 客户端通过 "命令 socket" 发送 RTSP 命令(BASE64 编码加密)。

    5. 服务器通过 "数据 socket" 响应 RTSP 命令(明文)。

    6. 重复 Step4-Step5,直到客户端发送 RTSP PLAY 命令,服务器响应 RTSP PLAY 命令。

    7. 服务器通过 数据 socket" 向客户端传输音视频数据

      数据交互...

    8. 客户端通过 "命令 socket" 发送 RTSP TEARDOWN 命令(BASE64 编码加密)

    9. 服务器通过 "数据 socket" 响应 RTSP TEARDOWN 命令(明文)。

    10. 关闭 2 个 socket。

    交互示例

    【学习地址】:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发
    【文章福利】:免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~

  • 相关阅读:
    【重拾C语言】三、分支程序设计(双分支和单分支程序设计、逻辑判断、多分支程序设计、枚举类型表示;典型例题:判断闰年和求一元二次方程根)
    docker部署prometheus+grafana服务器监控(二) - 安装数据收集器 node-exporter
    基于微信小程序的电影院票务系统设计与实现-计算机毕业设计源码+LW文档
    python_data_analysis_and_mining_action-master-5
    低密度奇偶校验码LDPC(十)——LDPC码的密度进化
    ESP8266-Arduino编程实例-MQ-135空气质量检测传感器驱动
    深入理解 XML 和 HTML 之间的区别
    麒麟系统smb共享输入用户密码无法连接的处理方法
    shell脚本(五)函数
    【老生谈算法】matlab实现图像滤波处理算法源码——图像滤波处理算法
  • 原文地址:https://blog.csdn.net/irainsa/article/details/128086352
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号