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
英文地址,請注明出處:http://en.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 ) { …