02-Media-6-rtsp_server.py 使用RTSP服务器流式传输H264和H265编码视频和音频的示例程序

rtsp_server.py 是使用k230的板载摄像头和WIFI联网功能,使用RTSP服务器流式传输视频和音频的程序示例。程序核心是创建了一个RtspServer类,该类用于初始化、启动、停止RTSP服务器,并进行视频和音频的流传输。

一、首先,程序导入必要的模块,包括视频编码、传感器、媒体处理等相关模块,以及时间、操作系统、线程等标准模块。

from media.vencoder import *      # 视频编码相关
from media.sensor import *        # 摄像头传感器控制
from media.media import *         # 媒体处理核心功能
import time, os                   # 系统功能
import _thread                    # 多线程支持
import multimedia as mm           # 多媒体功能
from time import *                # 时间相关功能

二、RtspServer类

初始化方法接受以下参数:会话名称、端口号、视频类型和是否启用音频。

默认情况下参数设置如下:会话名称为"test",端口为8554,视频类型为H264,不启用音频。

class RtspServer:def __init__(self,session_name="test",port=8554,video_type = mm.multi_media_type.media_h264,enable_audio=False):self.session_name = session_name # session nameself.video_type = video_type  # 视频类型264/265self.enable_audio = enable_audio # 是否启用音频self.port = port   #rtsp 端口号self.rtspserver = mm.rtsp_server() # 实例化rtsp serverself.venc_chn = VENC_CHN_ID_0 #venc通道self.start_stream = False #是否启动推流线程self.runthread_over = False #推流线程是否结束

start方法用于启动RTSP服务器。它首先初始化流(_init_stream),然后初始化RTSP服务器并设置端口,创建会话,启动RTSP服务器,启动流(_start_stream),最后启动一个线程来执行实际的流传输(_do_rtsp_stream)。

    def start(self):# 初始化推流self._init_stream()self.rtspserver.rtspserver_init(self.port)# 创建sessionself.rtspserver.rtspserver_createsession(self.session_name,self.video_type,self.enable_audio)# 启动rtsp serverself.rtspserver.rtspserver_start()self._start_stream()# 启动推流线程self.start_stream = True_thread.start_new_thread(self._do_rtsp_stream,())

stop方法用于停止RTSP服务器。它首先停止流传输线程,然后等待线程结束,接着停止流(_stop_stream),停止RTSP服务器,并释放资源。

    def stop(self):if (self.start_stream == False):return# 等待推流线程退出self.start_stream = Falsewhile not self.runthread_over:s

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/921480.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/921480.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

13-Java-面向对象-封装和this关键字

文章目录封装this关键字封装 告诉我们,如何正确设计对象的属性和方法。原则:对象代表什么,就得封装对应的数据,并提供数据对应的行为 package common;/*** Author: 大海* Date: 2025-09-06*/public class GirlFriend {/*private…

三高项目-缓存设计

三高项目-缓存设计 分流、并发 导流:将原本复杂操作的请求,引导到简单的操作上。以后再来查,不需要经过复杂的计算。 成本:空间,收益:节省了时间。 不要以为仅仅是 redis,map等。 对应。kv…

happen-before原则

什么是 happen-before 原则? happen-before 是一个逻辑关系,用于描述两个操作之间的 “先后顺序”—— 如果操作 A happen-before 操作 B,那么 A 的执行结果必须对 B 可见,且 A 的执行顺序在逻辑上先于 B。也就是保证指令有序性和…

4.1 机器学习 - 评估指标

模型评估是判断 “模型是否有效” 的核心环节,需结合任务类型(分类 / 回归)、数据分布(如类别不平衡)和商业目标选择指标。本节聚焦分类任务的核心评估指标,从定义、计算逻辑到适用场景逐一拆解&#xff0c…

雅菲奥朗SRE知识墙分享(七):『可观测性的定义与实践』

在分布式系统日益复杂的当下,故障不再是“是否发生”,而是“何时爆发”。SRE可观测性正是应对不确定性的“显微镜”与“导航仪”:通过指标、日志、追踪三大数据血脉,实时外化系统黑盒,让每一次抖动、每一行报错、每一次…

C++ 详细讲解vector类

目录 1. 什么是vector? 2. vector的使用 1. 构造函数---初始化 1. 默认构造函数(无参构造) 2. 填充构造函数(指定数量和初始值) 3. 范围构造函数(通过迭代器拷贝其他容器元素) 4. 拷贝构造函数(直接拷贝另一个vector) 注…

Windows Server2012 R2 安装.NET Framework 3.5

Windows Server2012 R2 安装.NET Framework 3.5 虚拟机系统是Windowsserver 2012R2,在安装SQlserver2012时候警告未安装.NET Framework 3.5。于是找了个.NET Framework 3.5的安装包,但是由于系统原因无法正常安装。按照提示从控制面板-程序-启动或关闭Wi…

IDEA中Transaction翻译插件无法使用,重新配置Transaction插件方法

原因 由于Transaction默认的翻译引擎为谷歌翻译,由于一些原因,这个翻译无法使用,因此导致插件无法使用。 解决办法 更换Transaction插件翻译引擎即可。 方法步骤 1.进入Idea的设置里,找到Tool下的Transaction选项2.更改翻译引擎&a…

外置flash提示音打包脚本

批处理脚本说明文档 - 音频资源打包与分发 一、脚本功能概述 本批处理脚本(.bat 文件)用于将指定目录下的多个音频文件(.wtg 和 .mp3 格式)打包为音频资源配置文件(tone.cfg),进一步将配置文件与…

Go语言设计模式(三)抽象工厂模式

抽象工厂模式与工厂模式类似,被认为是工厂方法模式的另一层抽象.抽象工厂模式围绕创建其他工厂的超级工厂工作.1.角色:1.1抽象产品:构成产品系列的一组不同但相关的产品的声明接口.1.2具体产品:实现抽象产品接口的类,主要用于定义产品对象,由相应的具体工厂创建.1.3抽象工厂:创…

大狗王 DG1+ 13.6G矿机详细参数解析与性能评测

近年来,随着加密货币挖矿行业的不断发展,越来越多的矿机厂商推出了高性能、低功耗的矿机设备。大狗王(DG1)13.6G矿机便是其中一款备受关注的设备,特别是在LTC(莱特币)、Doge(狗狗币&…

Python 算术运算练习题

计算数字特征值题目描述 编写一个程序,接收用户输入的两个整数 a 和 b(a > b > 0),计算并输出以下结果:a 与 b 的和的平方a 除以 b 的商和余数a 与 b 的平均数(保留 2 位小数)示例请输入整…

OS项目构建效能改进策划方案

一、现状分析与问题定位构建稳定性问题: 表现:非代码变更引发的构建失败(如环境依赖、工具链版本、第三方库更新、资源竞争等)“幽灵构建”时有发生。影响:严重破坏开发流程的顺畅性,耗费大量开发/测试人员…

Ai8051 2.4寸320*240 ILI9341 I8080接口驱动

/*---------------------------------------------------------------------*/ /* --- Web: www.STCAI.com ---------------------------------------------*/ /* 液晶屏驱动程序参考wiki技术网站提供的开源源码,仅供学习使用 */ /*----------------------…

最大似然估计:损失函数的底层数学原理

引言当你第一次看到线性回归时,你是否注意到了作为参数优化关键的损失函数(均方损失),你是否能够理解它的本质和由来。其实,在我第一次接触时,我是感到有些惊讶的,然后试着去强行理解它&#xf…

使用 n8n 结合通义千问大模型构建业务数据库分析智能体

一、项目概述 本项目致力于构建一个结合 n8n 工作流引擎 与 通义千问大模型 的智能体,旨在对庞大的业务数据库进行自动化分析、语义建模及自然语言问答。通过不同工作流的迭代构建,实现了表结构解析、业务含义提取、关系可视化、问答服务等能力&#xff…

css margin外边距重叠/塌陷问题

一、定义 相邻块级元素或父子元素的垂直外边距会合并&#xff08;折叠&#xff09;为单个边距&#xff0c;其大小为单个边距的最大值&#xff08;或如果他们相等&#xff0c;则仅为其中的一个&#xff09;&#xff0c;这种行为称为边距折叠 <div style"margin-bottom: …

可重复读 是否“100%”地解决幻读?

这是一个非常深刻的问题&#xff0c;答案是&#xff1a;几乎解决了&#xff0c;但在一个非常特殊且罕见的边界场景下&#xff0c;理论上仍然可能出现幻读。 因此&#xff0c;严格来说&#xff0c;它并非被“彻底”或“100%”地解决。下面我们来详细分解这个结论&#xff1a;1. …

从零开始的云计算生活——第五十八天,全力以赴,Jenkins部署

目录 一.故事背景 二.安装Jenkins必要插件 1.安装Publish Over SSH 2.安装maven integration插件 3. 配置jenkins并发执行数量 4. 配置邮件地址 三. 基于Jenkins部署PHP环境 1. 下载ansible插件 2. 下载ansible应用 3. 构建项目 ​编辑 使用Jenkins账户生成ssh密钥 …

串口HAL库发送问题

想了很久&#xff0c;不知道该标题起的是否合适&#xff0c;该篇Blog用于记录在使用HAL库的USART模块时实际遇到的一个涉及发送方式的问题&#xff0c;用于提醒自身同时也希望能帮到各位。程序问题叙述先来看一段代码&#xff1a;void CusUSART_SendByte_IT( uint8_t Byte ) { …