立创庐山派 K230 RTSP 推流

立创庐山派使用的是K230芯片,按照教程刷了canmv固件,下载canmv ide,使用嘉楠社区的rtsp和wlan例程,修改成连接wifi以及RTSP推流例程

# Description: This example demonstrates how to stream video and audio to the network using the RTSP server.
#
# Note: You will need an SD card to run this example.
#
# You can run the rtsp server to stream video and audio to the networkimport networkfrom media.vencoder import *
from media.sensor import *
from media.media import *
import time, os
import _thread
import multimedia as mm
from time import *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 #推流线程是否结束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,())def stop(self):if (self.start_stream == False):return# 等待推流线程退出self.start_stream = Falsewhile not self.runthread_over:sleep(0.1)self.runthread_over = False# 停止推流self._stop_stream()self.rtspserver.rtspserver_stop()#self.rtspserver.rtspserver_destroysession(self.session_name)self.rtspserver.rtspserver_deinit()def get_rtsp_url(self):return self.rtspserver.rtspserver_getrtspurl(self.session_name)def _init_stream(self):width = 1280height = 720width = ALIGN_UP(width, 16)# 初始化sensorself.sensor = Sensor()self.sensor.reset()self.sensor.set_framesize(width = width, height = height, alignment=12)self.sensor.set_pixformat(Sensor.YUV420SP)# 实例化video encoderself.encoder = Encoder()self.encoder.SetOutBufs(self.venc_chn, 8, width, height)# 绑定camera和vencself.link = MediaManager.link(self.sensor.bind_info()['src'], (VIDEO_ENCODE_MOD_ID, VENC_DEV_ID, self.venc_chn))# init media managerMediaManager.init()# 创建编码器chnAttr = ChnAttrStr(self.encoder.PAYLOAD_TYPE_H264, self.encoder.H264_PROFILE_MAIN, width, height)self.encoder.Create(self.venc_chn, chnAttr)def _start_stream(self):# 开始编码self.encoder.Start(self.venc_chn)# 启动cameraself.sensor.run()def _stop_stream(self):# 停止cameraself.sensor.stop()# 接绑定camera和vencdel self.link# 停止编码self.encoder.Stop(self.venc_chn)self.encoder.Destroy(self.venc_chn)# 清理bufferMediaManager.deinit()def _do_rtsp_stream(self):try:streamData = StreamData()while self.start_stream:os.exitpoint()# 获取一帧码流self.encoder.GetStream(self.venc_chn, streamData)# 推流for pack_idx in range(0, streamData.pack_cnt):stream_data = bytes(uctypes.bytearray_at(streamData.data[pack_idx], streamData.data_size[pack_idx]))self.rtspserver.rtspserver_sendvideodata(self.session_name,stream_data, streamData.data_size[pack_idx],1000)#print("stream size: ", streamData.data_size[pack_idx], "stream type: ", streamData.stream_type[pack_idx])# 释放一帧码流self.encoder.ReleaseStream(self.venc_chn, streamData)except BaseException as e:print(f"Exception {e}")finally:self.runthread_over = True# 停止rtsp serverself.stop()self.runthread_over = Trueif __name__ == "__main__":os.exitpoint(os.EXITPOINT_ENABLE)sta=network.WLAN(0)while(sta.active() == False):sta.active(1)print("wifi active......")while(sta.status() == False):#sta 连接 apprint(sta.connect("ssid名称","wifi密码"))print("wifi connected......")sleep(5)print(sta.ifconfig())# 创建rtsp server对象rtspserver = RtspServer()# 启动rtsp serverrtspserver.start()# 打印rtsp urlprint("rtsp server start:",rtspserver.get_rtsp_url())# 推流60s#sleep(60)while(1):sleep(60)# 停止rtsp serverrtspserver.stop()print("done")

在canmv ide里面保存为main.py自运行文件,重启后使用vlc拉流成功
拉流成功

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

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

相关文章

数据湖的概念(包含数据中台、数据湖、数据仓库、数据集市的区别)--了解数据湖,这一篇就够了

文章目录 一、数据湖概念1、企业对数据的困扰2、什么是数据湖3、数据中台、数据湖、数据仓库、数据集市的区别 网上看了好多有关数据湖的帖子,还有数据中台、数据湖、数据仓库、数据集市的区别的帖子,发现帖子写的都很多,而且专业名词很多&am…

Multkan

以下是KAN class的逐行解释,这个类是一个用于构建基于核激活网络(KAN)的神经网络模型的Python类: class KAN:定义一个名为KAN的类。 Attributes:以下部分列出了KAN类的属性,这些属性描述了类的状态和行为。 grid : int…

【案例】权限管理

数据库表结构 models.py from django.db import modelsclass Permission(models.Model):""" 权限表 """code models.CharField(verbose_name"路由名称", max_length32)name models.CharField(verbose_name"名称", max_le…

springboot kafka在kafka server AUTH变动后consumer自动销毁

前言 笔者使用了kafka用来传输数据,笔者在今年10月写了文章,怎么使用配置化实现kafka的装载:springboot kafka多数据源,通过配置动态加载发送者和消费者-CSDN博客 不过在实际运行中,kafka broker是加密的&#xff0c…

在Windows下编译支持https的wsdl2h

下载源码 在官网下载源码 安装Openssl 下载OpenSSL并安装,安装完成后需要将OpenSSL的路径添加到环境变量中 配置VS 1、打开工程 2、因为前面安装的OpenSLL是64位的,因此需要创建一个X64的配置 打开配置管理器,然后选择新建&#xff0…

【Webgl_glslThreejs】制作流水效果/毛玻璃效果材质

效果预览 shadertory源码 source: https://www.shadertoy.com/view/lldyDs 材质代码 import { DoubleSide, ShaderChunk, ShaderMaterial, TextureLoader } from "three"; /** * * source https://www.shadertoy.com/view/lldyDs */export default fu…

个性化联邦学习方法

基于知识蒸馏的个性化联邦学习方法 基于 Logit 的知识蒸馏方法: 基于 logit 的知识蒸馏方法也是知识蒸馏中的一种常见技术。通常,logit 是指模型输出的原始预测值(未经过 softmax 函数处理的类别分数)。在知识蒸馏中,…

《解锁决策树算法:机器学习领域的实用利器及其多面应用》

一、引言 在当今数据驱动的时代,机器学习正深刻改变着我们生活与工作的方方面面,而决策树算法作为其中的经典算法,凭借直观易懂、高效实用的优势,在众多领域都占据着重要地位。本文将带领大家全方位深入探究决策树算法&#xff0…

vue3+ts+uniapp微信小程序顶部导航栏

这是colorui改的&#xff0c;不用就不用看啦 color-ui(https://docs.xzeu.com/#/) 新建component文件夹创建topNavigation.vue <template><view><view class"cu-custom" :style"height: CustomBar px"><view class"cu-bar…

【AI战略思考13】克服懒惰,保持专注,提升效率,不再焦虑

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 引言 我发现自己最近非常懒惰&#xff0c;浪费了很多时间&#xff0c;也容易分心&#xff0c;不够专注&#xff0c;效率低下&#xff0c;且每天都有点焦虑&#xff0c;因此制定了下面的要求和作息时间表。 目…

Unity3D ngui和ugui区别与优缺点详解

前言 Unity3D是一款跨平台的游戏开发引擎&#xff0c;它支持多种平台&#xff0c;包括PC、移动设备和主机。在Unity3D中&#xff0c;UI系统是游戏开发中非常重要的一部分&#xff0c;它负责游戏中的用户界面的显示和交互。 对惹&#xff0c;这里有一个游戏开发交流小组&#…

openssl使用哈希算法生成随机密钥

文章目录 一、openssl中随机数函数**OpenSSL 随机数函数概览**1. **核心随机数函数** **常用函数详解**1. RAND_bytes2. RAND_priv_bytes3. RAND_seed 和 RAND_add4. RAND_status **随机数生成器的熵池****常见用例****注意事项** 二、使用哈希算法生成随机的密钥 一、openssl中…

大模型翻译能力评测

1. 背景介绍 随着自然语言处理技术的飞速发展&#xff0c;机器翻译已经成为一个重要的研究领域。近年来&#xff0c;基于大模型的语言模型在机器翻译任务上取得了显著的进展。这些大模型通常具有数亿甚至数千亿的参数&#xff0c;能够更好地理解和生成自然语言。 但是&#xf…

刷题日常(找到字符串中所有字母异位词,​ 和为 K 的子数组​,​ 滑动窗口最大值​,全排列)

找到字符串中所有字母异位词 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 题目分析&#xff1a; 1.将p里面的字符先丢进一个hash1中&#xff0c;只需要在S字符里面找到多少个和他相同的has…

【汇编语言】call 和 ret 指令(三) —— 深度解析汇编语言中的批量数据传递与寄存器冲突

文章目录 前言1. 批量数据的传递1.1 存在的问题1.2 如何解决这个问题1.3 示例演示1.3.1 问题说明1.3.2 程序实现 2. 寄存器冲突问题的引入2.1 问题引入2.2 分析与解决问题2.2.1 字符串定义方式2.2.2 分析子程序功能2.2.3 得到子程序代码 2.3 子程序的应用2.3.1 示例12.3.2 示例…

青训营-豆包MarsCode技术训练营试题解析九

介绍 ‌豆包青训营‌是由字节跳动和稀土掘金社区共同发起的技术培训和人才选拔项目&#xff0c;主要面向在校大学生。该项目的目标是培养具有职业竞争力的优秀开发工程师&#xff0c;并提供全程免费的课程&#xff0c;不收取任何费用‌。 课程内容和方向 豆包青训营的课程涵…

前端的面试题

1.常用的块与行属性内标签有哪些&#xff1f;有什么特征&#xff1f; 块标签&#xff1a;div、h1~h6、ul、li、table、p、br、form。 特征&#xff1a;独占一行&#xff0c;换行显示&#xff0c;可以设置宽高&#xff0c;可以嵌套块和行 行标签&#xff1a;span、a、img、text…

`asyncio.wait` 和 `asyncio.gather` 的区别

asyncio.wait 和 asyncio.gather 的区别 1. asyncio.wait2. asyncio.gather主要区别总结 在Python的异步编程中&#xff0c;asyncio.wait 和 asyncio.gather 都是用于等待多个异步任务完成的工具&#xff0c;但它们在功能和使用方式上有一些关键的区别。本文将详细解释这两个函…

48-基于单片机的LCD12864时间调控和串口抱站

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机的公交报站系统&#xff0c;可以手动报站&#xff0c;站名十个。 在lcd12864上显示时间&#xff08;年月日时分秒&#xff09;和站名&#xff0c;时间可以设置&#xff0c; 仿真中可以…

如何为 XFS 文件系统的 /dev/centos/root 增加 800G 空间

如何为 XFS 文件系统的 /dev/centos/root 增加 800G 空间 一、前言二、准备工作三、扩展逻辑卷1. 检查现有 LVM 配置2. 扩展物理卷3. 扩展卷组4. 扩展逻辑卷四、调整文件系统大小1. 检查文件系统状态2. 扩展文件系统五、处理可能出现的问题1. 文件系统无法扩展2. 磁盘空间不足3…