当前位置: 首页 > news >正文

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 name
self.video_type = video_type  # 视频类型264/265
self.enable_audio = enable_audio # 是否启用音频
self.port = port   #rtsp 端口号
self.rtspserver = mm.rtsp_server() # 实例化rtsp server
self.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)
# 创建session
self.rtspserver.rtspserver_createsession(self.session_name,self.video_type,self.enable_audio)
# 启动rtsp server
self.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 = False
while not self.runthread_over:
s
http://www.zskr.cn/news/8976.html

相关文章:

  • 深入解析:敏捷开发-Scrum(下)
  • Java课前问题列表-面向对象入门2与类的识别
  • ES——(一)基本概念 - 指南
  • 意义感是完全主观的
  • Fmt库在CentOS 7的应用指南
  • 用 Lua 实现验证码识别
  • 完整教程:【RabbitMQ】-----详解RabbitMQ高级特性之消息确认机制
  • Python网络请求库requests使用详述
  • 数据结构与排序算法:从理论到场景,解锁高效数据处理的核心逻辑 - 指南
  • 内存超频最强的千元板!微星B850MPOWER主板评测
  • Docker - Create my own Ubuntu image and run it on Windows
  • NIO重构UDP收发模块
  • 题解:SP6562 PRUBALL - Esferas
  • US$34 MB ESL Emulator
  • 采用python test测试http接口
  • CF2147 Codeforces Global Round 29 (Div. 1 + Div. 2) 解题报告
  • 详细介绍:农业XR数字融合工作站,赋能农业专业实践学习
  • 第三周:面向对象入门2与类的识别
  • 【面向接口编程(IOP)典型场景】底层组件如何实现回调通知上层应用系统? 另外一种实现方式
  • GEE训练教程:Sentinel-2卫星影像揭秘飓风奥蒂斯破坏力 - 指南
  • abc418d
  • Chapter 6 Joining Images
  • 动态主机配置协议(DHCP)中的中继机制及其配置
  • 进一步理解自适应卡尔曼滤波(AKF) - 教程
  • 完整教程:基于Spring Boot植物销售管理系统的设计与实现
  • Vdd Vcc
  • 使用Java实现用户的注册和登录流程
  • Windows安装Kafka(kafka_2.12-3.9.1),配置Kafka,以及遇到的困难解决方案
  • Chapter 5 Wrap Perspective
  • 手动清除Ubuntu系统中的内存缓存