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

数字投屏叫号器-发射端python窗口定制

窗口

在这里插入图片描述

本系列前章介绍,叫号器的显示端,完成了视频音频的形成和传输的介绍。本章节开始定制小窗口。
最终实现,处于桌面最前端,发送指令,集合前篇即可完成:

  • 处理本地text.txt更新,随之被rtsp采集
    ffmpeg 参数: -vf "drawtext=textfile=text.txt:reload=1:x=10:y=10:fontsize=20:fontcolor=red:fontfile=simhei.ttf"
  • 播报语音 透过虚拟声卡发送到rtsp
    ffmpeg 参数:-f dshow -i audio="CABLE Output (VB-Audio Virtual Cable)" -acodec aac -b:a 128k

集成运行的要点

  1. 指定声卡为虚拟声卡。
  2. 运行mediamtx免费的流媒体服务器,
  3. 本网络有一台可接受投屏,并支持rtsp流的显示设备android推荐airReciever

补充:
ffmpeg进程需要常驻后台,有断开检测。重启后需要再次推送。
推流 的python任务,需要检测播放状态。dlna是播放就结束。airplay是播放后等待。需要选择一种。

主要窗体代码:

import tkinter as tk
import pyttsx3
from tkinter import messageboximport asyncio# 数值验证函数
def say(text):eng=pyttsx3.init()eng.say(text)eng.runAndWait()update_status(f"{saytext}-播放结束")def validate_num_input(text):if text == "":  # 允许清空输入框return Truetry:int(text)return Trueexcept ValueError:return False# 数值操作函数
def increase():try:current = int(num_entry.get())except ValueError:current = 0num_entry.delete(0, tk.END)num_entry.insert(0, str(current + 1))def decrease():try:current = int(num_entry.get())except ValueError:current = 0num_entry.delete(0, tk.END)num_entry.insert(0, str(current - 1))# 数据发送函数
def send_data():global saytexttext = text_entry.get()number = num_entry.get()saytext=text.replace('n',number)update_status(f"{saytext}-准备播放")def update_status(new_status):# 更新状态栏的文本内容global status_barstatus_bar.config(text=new_status)# 刷新界面以立即显示更新status_bar.update_idletasks()    # messagebox.showinfo(#     "发送结果",#     f"文本内容:{text}\n数字数值:{number}\n说出文本:{saytext}",#     parent=root# )# 创建主窗口
root = tk.Tk()
root.title("控制面板")
root.geometry("250x150")# 输入验证注册
validate_cmd = root.register(validate_num_input)# 控件创建
tk.Label(root, text="文本输入:").grid(row=0, column=0, padx=1, pady=1, sticky="w")
text_entry = tk.Entry(root)
text_entry.grid(row=0, column=1, padx=1, pady=1, columnspan=2)
default_text = "请n号就诊"
text_entry.insert(tk.END, default_text)
tk.Label(root, text="数字输入:").grid(row=1, column=0, padx=1, pady=1, sticky="w")
num_entry = tk.Entry(root,validate="key",validatecommand=(validate_cmd, "%P")
)
num_entry.grid(row=1, column=1, padx=2, pady=2, columnspan=2)
num_entry.insert(0, "0")  # 设置初始值# 按钮区域
button_frame = tk.Frame(root)
button_frame.grid(row=2, column=0, columnspan=3, pady=10)
tk.Button(button_frame, text="-", command=decrease).pack(side="left", padx=1)
tk.Button(button_frame, text="+", command=increase).pack(side="left", padx=1)button=tk.Button(button_frame, text="发送", command=send_data,bg="white")
button.pack(side="left", padx=1,pady=2)status_bar = tk.Label(root, text="初始状态")
status_bar.grid(row=3, column=1, padx=1, pady=1, sticky="w")
# 模拟一个异步函数
saytext=None
async def async_task():global saytextwhile True:#    print("异步任务正在运行...")await asyncio.sleep(1)if saytext:say(saytext)saytext=None# 将异步任务与 Tkinter 集成
def run_async_task(root):loop = asyncio.get_event_loop()task = loop.create_task(async_task())def update():loop.stop()loop.run_forever()root.after(100, update)root.after(100, update)run_async_task(root)
root.wm_attributes("-topmost", 1)
root.mainloop()

bilibile com title-投屏器的发送端 视频来源

相关文章:

数字投屏叫号器-发射端python窗口定制

窗口 本系列前章介绍,叫号器的显示端,完成了视频音频的形成和传输的介绍。本章节开始定制小窗口。 最终实现,处于桌面最前端,发送指令,集合前篇即可完成: 处理本地text.txt更新,随之被rtsp采集…...

从零开始实现大语言模型(十四):高阶训练技巧

1. 前言 预训练大语言模型的流程与训练普通神经深度网络模型本质上并没有任何不同。可以使用深度学习实践中已经被证明非常有效的高阶训练技巧,优化大语言模型预训练流程,使大语言模型预训练效率更高,训练过程更稳定。 本文介绍深度学习领域…...

Spring-framework源码编译

版本统一(搭配其他版本会遇到不可知错误): 1)spring 5.2.X(5.5.26) 2)JDK8 3)Gradle:5.6.4 可以在gradle-wrapper.properties中修改 https\://services.gradle.org/distribution…...

分布式系统的核心挑战与解决方案

1、分布式系统的引入 在移动互联网、云计算和物联网的推动下,现代软件系统需要处理亿级用户请求、PB级数据存储和毫秒级响应需求。传统的单体架构受限于单机性能瓶颈和容灾能力,逐渐被分布式系统取代。例如,电商平台在“双十一”期间需应对每…...

fastjson漏洞

fastjson漏洞 fastjson工作原理攻击原理补充 例子 fastjson工作原理 fastjson的作用是将JAVA对象转换成对应的json表示形式,也可以反过来将json转化为对应的Java对象。fastjson使用AutoType功能进行反序列化,AutoType使用type标记字符的原始类型&#x…...

upload-labs详解(13-20)文件上传分析

目录 upload-labs-env upload-labs-env第十三关 文件包含漏洞 代码 测试 上传一个.jpg图片 上传一个.png文件 上传一个.gif图片 upload-labs-env第十四关 代码 思路 upload-labs-env第十五关 代码 思路 upload-labs-env第十六关 代码 思路 测试 上传gif格式…...

HTML第四节

一.复合选择器 1.后代选择器 注:1.后代选择器会选中后代所有的要选择的标签 2.儿子选择器 3.并集选择器 注:1.注意换行,同时选中多种标签 4.交集选择器 注:1.标签选择器放在最前面,例如放在类选择器的前面 2.两个选择…...

基于 LeNet 网络的 MNIST 数据集图像分类

1.LeNet的原始实验数据集MNIST 名称:MNIST手写数字数据集 数据类型:灰度图 (一通道) 图像大小:28*28 类别数:10类(数字0-9) 1.通过torchvision.datasets.MNIST下载并保存到本地…...

win11编译llama_cpp_python cuda128 RTX30/40/50版本

Geforce 50xx系显卡最低支持cuda128,llama_cpp_python官方源只有cpu版本,没有cuda版本,所以自己基于0.3.5版本源码编译一个RTX 30xx/40xx/50xx版本。 1. 前置条件 1. 访问https://developer.download.nvidia.cn/compute/cuda/12.8.0/local_…...

Spring Boot静态资源访问顺序

在 Spring Boot 中,static 和 public 目录都用于存放静态资源(如 HTML、CSS、JavaScript、图片等文件),但它们在使用上有一些细微的区别。以下是它们的详细对比: 1. 默认优先级 Spring Boot 会按照以下优先级加载静态…...

电脑总显示串口正在被占用处理方法

1.现象 在嵌入式开发过程中,有很多情况下要使用串口调试,其中485/422/232转usb串口是非常常见的做法。 根据协议,接口芯片不同,需要安装对应的驱动程序,比如ch340,cp2102,CDM212364等驱动。可…...

工具介绍《HACKBAR V2》

HackBar V2 是一款功能强大的浏览器渗透测试工具,主要用于测试 SQL 注入、XSS 漏洞、POST 传参等安全场景。以下是其核心功能、用法及实际案例操作的综合介绍: 一、核心功能与用法详解 1. 基础操作 Load URL 功能:将当前浏览器地址栏的 URL …...

Java算法语法学习 美丽子集的数目 - 力扣 Map接口

文章目录 题目解题思路题解统计数组中每个数字按模k分组的出现次数,并保持数值有序作用 **merge(x, 1, Integer::sum)**解释**检查键是否存在**:**合并现有值**: 示例在代码中的应用**计算余数**:**存储余数及其出现次数**: merge 的常见用法统计频率合并字符串合并…...

Vue项目通过内嵌iframe访问另一个vue页面,获取token适配后端鉴权(以内嵌若依项目举例)

1. 改造子Vue项目进行适配(ruoyi举例) (1) 在路由文件添加需要被外链的vue页面配置 // 若依项目的话是 router/index.js文件 {path: /contrast,component: () > import(/views/contrast/index),hidden: true },(2) 开放白名单 // 若依项目的话是 permission.js 文件 cons…...

梯度本质论:从黎曼流形到神经网络的拓扑寻优

一、微分几何框架下的梯度再诠释 在标准数学分析中,梯度被定义为标量场 f : R n → R f:\mathbb{R}^n→\mathbb{R} f:Rn→R的导数张量 ∇ f ( ∂ f ∂ x 1 , . . . , ∂ f ∂ x n ) \nabla f(\frac{\partial f}{\partial x_1},...,\frac{\partial f}{\partial x_n…...

计算机毕业设计SpringBoot+Vue.js网络海鲜市场系统(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

一文对比RAGFLOW和Open WebUI【使用场景参考】

一、RAGFLOW与Open WebUI RAGFLOW是一款基于深度文档理解构建的开源 RAG(Retrieval-Augmented Generation)引擎。RAGFlow 可以为各种规模的企业及个人提供一套精简的 RAG 工作流程,结合大语言模型(LLM)针对用户各类不…...

2025年03月07日Github流行趋势

项目名称:ai-hedge-fund 项目地址url:https://github.com/virattt/ai-hedge-fund项目语言:Python历史star数:12788今日star数:975项目维护者:virattt, seungwonme, KittatamSaisaard, andorsk, arsaboo项目…...

实训任务2.2 使用Wireshark捕获数据包并分析

目录 【实训目标】 【实训环境】 【实训内容】 【实训步骤】 1.启动WireShark 2. 使用Wireshark捕获数据包 (1)选择网络接口 (2)捕获数据包 (1)设置Wireshark过滤器并捕获数据包 (2&…...

C# Lambda 表达式 详解

总目录 前言 在C#编程中,Lambda表达式是一种简洁而强大的语法特性,它提供了一种更加灵活和直观的方式来编写匿名函数。无论是在LINQ查询、事件处理还是异步编程中,Lambda表达式都扮演着重要角色。本文将详细介绍Lambda,帮助您更好…...

Wan2.2-I2V-A14B在微信小程序开发中的应用:实时图片转视频功能实现

Wan2.2-I2V-A14B在微信小程序开发中的应用:实时图片转视频功能实现 1. 引言 "一张照片能变成视频吗?"这是很多社交类小程序用户常有的疑问。想象一下,用户在电商小程序上传商品图片后,系统自动生成一段展示视频&#…...

Java 25并发模型重构实战:用StructuredTaskScope替代CompletableFuture组合的4种高危写法(附JFR火焰图对比)

第一章:Java 25结构化并发演进全景图Java 25正式将结构化并发(Structured Concurrency)从孵化阶段(JEP 428、437、444)升级为标准特性,标志着JVM平台在并发模型抽象上完成关键跃迁。该机制通过作用域&#…...

CodeSys自定义HTML5控件:从零构建到工程实践

1. 为什么需要自定义HTML5控件? 在工业自动化领域,可视化监控是设备管理的重要环节。CodeSys作为主流的工业控制开发平台,其WebVisu功能虽然提供了基础控件库,但在实际项目中经常会遇到这样的尴尬:标准控件无法满足特定…...

5分钟轻松掌握:Magisk让Android手机获得超能力的终极指南

5分钟轻松掌握:Magisk让Android手机获得超能力的终极指南 【免费下载链接】Magisk The Magic Mask for Android 项目地址: https://gitcode.com/GitHub_Trending/ma/Magisk 如果你想让自己的Android手机变得更强大、更自由,Magisk绝对是你不可错过…...

Free-NTFS-for-Mac全功能指南:跨平台文件自由传输的开源解决方案

Free-NTFS-for-Mac全功能指南:跨平台文件自由传输的开源解决方案 【免费下载链接】Free-NTFS-for-Mac Nigate,一款支持苹果芯片的Free NTFS for Mac小工具软件。NTFS R/W for macOS. Support Intel/Apple Silicon now. 项目地址: https://gitcode.com/…...

告别pip安装失败:在Jetson Nano(ARM64)上手动编译PyQt5 5.15.2的完整记录

在Jetson Nano(ARM64)上手动编译PyQt5 5.15.2的完整指南 当你在Jetson Nano这样的ARM64架构设备上尝试用pip安装PyQt5时,很可能会遇到各种兼容性问题。作为一款强大的Python GUI库,PyQt5在嵌入式开发中有着广泛的应用场景&#x…...

Phi-3 Forest Laboratory 与SpringBoot微服务整合:打造企业级AI中台

Phi-3 Forest Laboratory 与SpringBoot微服务整合:打造企业级AI中台 最近和几个做企业级应用开发的朋友聊天,大家不约而同地提到了同一个痛点:公司内部有好几个业务团队都想用上最新的AI能力,比如用Phi-3这样的模型做智能客服、文…...

Go后端项目代码规范:编写可维护Clean Architecture代码的7个黄金法则

Go后端项目代码规范:编写可维护Clean Architecture代码的7个黄金法则 【免费下载链接】go-backend-clean-architecture A Go (Golang) Backend Clean Architecture project with Gin, MongoDB, JWT Authentication Middleware, Test, and Docker. 项目地址: https…...

Windows/Linux双平台实战:用Docker快速部署MySQL 5.7.36并导入数据

跨平台Docker实战:MySQL 5.7.36高效部署与数据迁移指南 在混合开发环境中,数据库的快速部署与迁移往往是影响团队协作效率的关键因素。想象一下这样的场景:一位开发者刚在Windows笔记本上完成本地测试,需要将包含复杂表结构的MySQ…...

Wan2.2-I2V-A14B GPU算力优化:显存碎片整理与缓存复用机制解析

Wan2.2-I2V-A14B GPU算力优化:显存碎片整理与缓存复用机制解析 1. 引言 在视频生成领域,Wan2.2-I2V-A14B模型凭借其出色的生成质量和稳定性,已成为众多企业和开发者的首选。然而,随着视频分辨率和时长的提升,显存资源…...