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