rtsp python实现
1. rtsp rtp rtcp
https://hope-wisdom.blog.csdn.net/article/details/138259027
2.rtsp加速
https://mp.weixin.qq.com/s/0C1b-8pFw0HaE1xpNbrxxw
3. 实现了一部分获取数据
import socket
import base64
import threading
import struct# 定义 RTSP 请求
def send_rtsp_request(rtsp_method, rtsp_url, cseq, auth=None, transport=None):request = f"{rtsp_method} {rtsp_url} RTSP/1.0\r\n"request += f"CSeq: {cseq}\r\n"if transport:request += f"Transport: {transport}\r\n"if auth:request += f"Authorization: Basic {auth}\r\n"request += "User-Agent: Vision MC\r\n"request += "\r\n"return request# 解析 SDP 信息
def parse_sdp(sdp):sdp_lines = sdp.split('\r\n')protocol = Noneport = Nonefor line in sdp_lines:if line.startswith('m=video'):parts = line.split(' ')port = int(parts[1])protocol = parts[2]break # 找到第一个媒体描述后就可以停止了return protocol, port# 接收 RTP 数据
def recv_rtp_data(sock):while True:try:rtp_data, _ = sock.recvfrom(4096)print(rtp_data)# # 解析 RTP 数据包# version = (rtp_data[0] & 0xC0) >> 6# padding = (rtp_data[0] & 0x20) >> 5# extension = (rtp_data[0] & 0x10) >> 4# csrc_count = rtp_data[0] & 0x0F# marker = (rtp_data[1] & 0x80) >> 7# payload_type = rtp_data[1] & 0x7F# sequence_number = struct.unpack('!H', rtp_data[2:4])[0]# timestamp = struct.unpack('!I', rtp_data[4:8])[0]# ssrc = struct.unpack('!I', rtp_data[8:12])[0]# payload = rtp_data[12:]## # 处理 RTP 数据包的有效负载# print(payload)except Exception as e:print(f"Error receiving RTP data: {e}")break# 定义 RTSP 服务器地址和端口
server_address = ('192.168.1.64', 554)# RTSP URL
rtsp_url = "rtsp://192.168.1.64:554/Streaming/Channels/1"
rtsp_url1 = "rtsp://192.168.1.64:554/Streaming/Channels/1/trackID=1"# 用户名和密码
username = "admin"
password = "av3926867"# 将用户名和密码编码为 Base64 字符串
auth_str = base64.b64encode(f"{username}:{password}".encode()).decode()# 创建 TCP 连接
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as client_socket:client_socket.connect(server_address)# 发送 DESCRIBE 请求rtsp_request = send_rtsp_request("DESCRIBE", rtsp_url, 1, auth_str)client_socket.sendall(rtsp_request.encode())# 接收并打印 RTSP 响应rtsp_response = client_socket.recv(4096).decode()print(rtsp_response)# 解析 SDPprotocol, port = parse_sdp(rtsp_response)# 设置 RTP 数据接收套接字rtp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)rtp_socket.settimeout(15)rtp_socket.bind(('0.0.0.0', 0)) # 动态分配本地端口local_rtp_port = rtp_socket.getsockname()[1]# 发送 SETUP 请求transport = f"RTP/AVP/TCP;unicast;interleaved=0-1"rtsp_request = send_rtsp_request("SETUP", rtsp_url1, 2, auth_str, transport)client_socket.sendall(rtsp_request.encode())rtsp_response = client_socket.recv(4096).decode()print(rtsp_response)# 启动接收 RTP 数据的线程rtp_thread = threading.Thread(target=recv_rtp_data, args=(rtp_socket,))rtp_thread.start()# 发送 PLAY 请求rtsp_request = send_rtsp_request("PLAY", rtsp_url, 3, auth_str)client_socket.sendall(rtsp_request.encode())# 接收并解析 RTSP 响应rtsp_response = client_socket.recv(4096).decode()print(rtsp_response)# 等待 RTP 数据接收线程结束rtp_thread.join()
其中关于rtp的报文解析没有做
相关文章:
rtsp python实现
1. rtsp rtp rtcp https://hope-wisdom.blog.csdn.net/article/details/138259027 2.rtsp加速 https://mp.weixin.qq.com/s/0C1b-8pFw0HaE1xpNbrxxw 3. 实现了一部分获取数据 import socket import base64 import threading import struct# 定义 RTSP 请求 def send_rtsp_…...
RHCE (Linux进阶) Ubuntu 操作系统安装教程
一、在官网下载iso镜像文件 下载地址: https://cn.ubuntu.com/download/server/step1#downloads(下载最新的Ubuntu 20.04 LTS服务器版本) 二、VMware安装配置过程 基本安装过程 1、新建虚拟机 2、选择典型即可 3、设置下载好的Ubuntu对应路…...
vue-router 源码分析——1. 路由匹配
这是对vue-router 3 版本的源码分析。 本次分析会按以下方法进行: 按官网的使用文档顺序,围绕着某一功能点进行分析。这样不仅能学习优秀的项目源码,更能加深对项目的某个功能是如何实现的理解。这个对自己的技能提升,甚至面试时…...
百度云下载不限速方式集合
使用解析网站配合Motrix工具软件 下载Motrix工具:Motrix下载链接打开解析网址:解析网站获取,将百度网盘链接粘贴到解析网站,获取下载链接。在Motrix中配置Aria2 RPC地址:ws://localhost:16800/jsonrpc开始下载&#x…...
2024年6月1日 (周六) 叶子游戏新闻
Embracer探讨单机游戏大作涨价超过70美元的可能性在Embracer集团等待公布新公司名称的同时,他们对游戏大作的价格上涨做出了评论。几年来,游戏大作的价格已经达到了70美元的门槛。Embracer集团的CEO Lars Wingefors在采访中表示,电子游戏行业…...
MathorCup挑战赛获奖名单公示,第九届研讨会及颁奖典礼即将举行
近日,备受瞩目的2024年第十四届MathorCup高校数学建模挑战赛圆满落幕,竞赛组委会于近日公示了获奖名单初稿。本届竞赛自2024年4月12日至16日举行,吸引了来自全国740所高校的9119支队伍踊跃参与,其中包括本科生、研究生、专科生及教…...
vulnhub靶机xptosystem
下载地址:https://download.vulnhub.com/xpto/xptosystem.ova 主机发现 端口扫描 服务扫描 漏洞扫描 看一下web 目录爆破 那不用说肯定看看robots.txt 要检查readme去看看 看不懂 这个是靶场吧很像 在最后看着挺像url路径的 还真是,我直接base64 坏了还…...
Spring Boot详解:深入了解与实践
文章目录 1. Spring Boot简介1.1 什么是Spring Boot?1.2 Spring Boot的历史背景1.3 Spring Boot的核心特点 2. Spring Boot的核心概念2.1 自动配置2.1.1 自动配置原理2.1.2 自定义配置 2.2 Spring Boot Starter2.3 Spring Boot CLI 3. Spring Boot的主要功能模块3.1…...
FreeRtos进阶——中断的内部逻辑
中断与非中断API的区别 BaseType_t xQueueSendToBack(QueueHandle_t xQueue,const void *pvItemToQueue,TickType_t xTicksToWait); BaseType_t xQueueSendToBackFromISR(QueueHandle_t xQueue,const void *pvItemToQueue,BaseType_t *pxHigherPriorityTaskWok…...
Centos7对比Ubuntu一些常用操作差异点
Centos7对比Ubuntu一些常用操作差异点 CentOS 7将于2024年6月30日停止维护,CentOS8已经转为Rhel的上游项目。同时Centos7的软件仓库中,部分软件版本较老。后续使用过程中可以考虑切换到Ubuntu。 下面总结了一些两个系统的常见差异点,包括软…...
24、matlab二维和三维网格(meshgrid函数)以及散点数据插值 griddata()函数
1、二维和三维网格(meshgrid函数) 语法 语法1:[X,Y] = meshgrid(x,y) 基于向量 x 和 y 中包含的坐标返回二维网格坐标。 语法2:[X,Y] = meshgrid(x) 与 [X,Y] = meshgrid(x,x) 相同,并返回网格大小为 length(x)length(x) 的方形网格坐标。 语法3:[X,Y,Z] = meshgrid(x,y,…...
Codeforces Round 950 (Div. 3)
好久没写题解了,今天来写个题解。 A - 问题 Generator #include "bits/stdc.h" using namespace std;#define int long long #define endl \n #define IOS ios::sync_with_stdio(0),cin.tie(0); #define all(x) x.begin(),x.end() #define pi pair<in…...
弘君资本炒股开户:如何看待股价波动?
在股票商场上股价的动摇无疑是投资者最为关心的话题之一,面临股价的起伏不定投资者往往会感到迷茫和焦虑。关于怎么看待股价动摇,弘君资本下面就为大家详细介绍一下。 股价动摇是股市运行的常态,股市是国民经济的晴雨表,股票价格…...
操作系统实验六 文件系统验证实验
前言 当时由于假期的原因,我们不需要做实验五,所以实验六是我们做的最后一个实验,因此实验五就需要靠大家自己完成了。 1.实验目的 初步掌握Linux系统文件权限和IO操作。 2.实验内容 熟悉Linux系统文件权限和使用相关IO函数进行文件创建和…...
python中的循环控制语句break与continue
学习这两个语句之前,我们要先了解这两个语句是什么意思: break:中断、打破的意思。所以它的跳出循环的意思 continue:继续的意思,意思是跳过当前条件,继续循环 新需求来了!我们不仅要告诉 Py…...
C语言笔记23 •文件操作•
1.为什么要使用文件? 文件,顾名思义就是存储我们所写在电脑上的文本内容。如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失 了,等再次运⾏程序&#x…...
新项目来了,JDK 17和JDK 21 该如何选择?
博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …...
友顺科技(UTC)分立器件与集成IC产品选型和应用
友顺科技股份有限公司成立于1990年,是全球领先的集成电路与功率半导体厂商 ,集团总部位于台北,生产基地位于福州、厦门。 友顺科技具有完整模拟组件产品线,其中类比IC涵盖各种稳压器、PWM控制IC, 放大器、比较器、逻辑IC、Voltage Translato…...
并发与多线程:创建多个线程,数据共享
数据共享问题分析 1. 只读的数据:安全稳定的,不需要特殊处理; 2. 又读又写的数据:2个线程写,8个线程读,写不好程序会崩。 c11并发于多线程_2章_4节_哔哩哔哩_bilibili...
【机器学习数据挖掘】基于ARIMA 自回归积分滑动平均模型的销售价格库存分析报告 附完整python代码
资源地址:Python数据分析大作业 4000字 图文分析文档 销售分析 完整python代码 完整代码分析 同时销售量后1000的sku品类占比中(不畅销产品)如上,精品类产品占比第一,达到66.7%,其次是香化类产品&#…...
CLI为什么突然爆了?一文讲清 Skill、MCP、CLI 的真实关系
导读最近可以明显看到一个变化:钉钉、飞书、企业微信,开始陆续开放 CLI 能力 越来越多团队,不再只讨论提示词,而是在做一件更实际的事:让 AI 直接参与执行很多人开始有几个共通疑问:CLI 到底是什么Skill 和…...
Oracle数据库进程体系结构概述
Oracle数据库进程体系结构概述 Oracle属于多进程体系架构,它由多个后台进程组成,每个后台进程完成特定的维护任务,进程之间互相协助,最终共同完成数据库所需的维护任务。 本文讲述的内容: 1、进程类型 2、Oracle两种服…...
Spring Data测试终极指南:Testcontainers集成测试与Mock数据策略详解
Spring Data测试终极指南:Testcontainers集成测试与Mock数据策略详解 【免费下载链接】spring-data-examples Spring Data Example Projects 项目地址: https://gitcode.com/gh_mirrors/sp/spring-data-examples Spring Data测试是确保数据访问层可靠性的关键…...
2026届学术党必备的六大AI辅助论文工具实际效果
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 知网在近期对自己的 AIGC 检测服务进行了升级,其目的在于识别存在于论文之中的、…...
S-UI系统调用分析:与操作系统交互的底层实现
S-UI系统调用分析:与操作系统交互的底层实现 还在为网络代理管理系统的底层实现而困惑?本文将深入解析S-UI如何通过系统调用与操作系统深度交互,让你全面掌握这套高级Web面板的底层工作原理。 读完本文你将了解: S-UI如何处理系…...
宝塔Linux面板Bug修复:添加反向代理出错
起因 由于工作需要,在宝塔面板中创建一个反向代理的站点,结果每次都报错: 向宝塔论天提交了Bug,结果两天了还在审核中。 由于急用,因此不等官方修复了,自己动手修复! 故障原因 从报错信息可以看到&…...
WinForm实战:C#如何优雅地调用外部exe并传递多个参数(附完整代码示例)
WinForm实战:C#如何优雅地调用外部exe并传递多个参数(附完整代码示例) 在Windows桌面应用开发中,经常需要与其他程序进行交互。想象这样一个场景:你正在开发一个数据可视化工具,需要调用Python脚本处理原始…...
LeaguePrank:英雄联盟客户端个性化引擎完全指南
LeaguePrank:英雄联盟客户端个性化引擎完全指南 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank 1. 价值定位:重新定义游戏界面体验 1.1 产品核心价值 LeaguePrank作为开源的英雄联盟客户端个性化引擎…...
新手入门网络安全:用快马AI生成你的第一个密码强度检测器
最近在自学网络安全基础知识,发现密码强度检测是个很好的入门实践。作为新手,我尝试用InsCode(快马)平台的AI辅助功能,快速生成了一个密码强度检测器,整个过程特别适合零基础学习者。这里记录下实现思路和关键要点: 密…...
如何通过CyberpunkSaveEditor实现赛博朋克2077存档编辑与自定义体验?
如何通过CyberpunkSaveEditor实现赛博朋克2077存档编辑与自定义体验? 【免费下载链接】CyberpunkSaveEditor A tool to edit Cyberpunk 2077 sav.dat files 项目地址: https://gitcode.com/gh_mirrors/cy/CyberpunkSaveEditor 赛博朋克2077存档修改是许多玩家…...
