使用sounddevice录制扬声器的声音和录屏

news/2024/12/22 22:17:52/文章来源:https://www.cnblogs.com/tellw/p/18622662

寻找扬声器声音的可录制接口

import sounddevice as sd
import wave
import osdevices=sd.query_devices()
print(devices)for i in range(len(devices)):wf=wave.open(f'test{i}.wav','wb')wf.setnchannels(1)wf.setsampwidth(2)wf.setframerate(16000)def callback(indata,frames,time,status):wf.writeframes(bytes(indata))try:with sd.RawInputStream(samplerate=16000,blocksize=4096,dtype='int16',channels=1,device=i,callback=callback):sd.sleep(10000)print(f'{i} interface available')wf.close()except:print(f'{i} interface unavailable')wf.close()os.remove(f'test{i}.wav')

针对sounddevice.query_devices()所查询到的每个设备录制音频,出现报错则说明该设备无法录制。聆听每个可用设备所生成的test.wav,可以找到目标设备。

录制屏幕

import sounddevice as sd
import wave
import os
import time
import numpy as np
from PIL import ImageGrab,Image
import cv2
from multiprocessing import Process
import subprocess
import shutildef record_screen_motion(st):while time.time()<st:passwhile True:img=ImageGrab.grab(bbox=(0,0,1920,1080)) # windows-系统设置-屏幕-分辨率,屏幕坐标系ct=time.time()img=np.array(img.getdata(),np.uint8).reshape(img.size[1],img.size[0],3)img=cv2.cvtColor(img,cv2.COLOR_RGB2BGR)cv2.imwrite(f'{int((ct-st)*10):05d}.jpg',img)if __name__=='__main__':di=time.strftime('%Y%m%d%H%M%S')os.mkdir(di)os.chdir(di)wf=wave.open('test.wav','wb')wf.setnchannels(1)wf.setsampwidth(2)wf.setframerate(16000)def callback(indata,frames,time,status):wf.writeframes(bytes(indata))try:st=time.time()record_screen_process=Process(target=record_screen_motion,args=(st+1,))record_screen_process.daemon=Truerecord_screen_process.start()while time.time()<st+1:passwith sd.RawInputStream(samplerate=16000,blocksize=1024,dtype='int16',channels=1,device=21,callback=callback):while True:sd.sleep(10000)except KeyboardInterrupt:wf.close()files=os.listdir()existed_num=[]for file in files:if file.endswith('.jpg'):existed_num.append(int(file.split('.')[0]))existed_num.sort()count=0for i in range(existed_num[-1]):if not os.path.exists(f'{i:05d}.jpg'):shutil.copy(f'{existed_num[count]:05d}.jpg',f'{i:05d}.jpg')else:count+=1subprocess.run('ffmpeg -f image2 -framerate 10 -i "%05d.jpg" -b:v 25313k test.mp4')subprocess.run('ffmpeg -i test.mp4 -i test.wav -vcodec copy -acodec aac o.mp4') # 音频流进行aac编码,来构造视频,MP4容器中不支持PCM(pcm_alaw、pcm_s16le),https://cloud.tencent.com/developer/ask/sof/105539438print('完成录制屏幕任务')

截屏和录音在脚本启动1秒后同时开始进行,由于笔记本的垃圾性能,隔40毫秒启动一个截屏线程(以电影帧率来做帧),跟不用线程、连续截屏的效果一样(1fps),算好截屏时跟0帧之间的距离,按照10fps为帧编号,且复制补充中间帧,最后构造图片流,如果电脑硬件条件好,截屏速率大于10fps,可以考虑改变一些参数,使得画面更加流畅。

参考链接:

massorant Vosk_real-time_stt

tellw/speech_input

python 三种方式实现截屏(详解+完整代码)

创建于2412222215,修改于2412222215

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

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

相关文章

HarmonyOS应用开发实战-开箱即用的首页页面构建与ArkTS解析【HarmonyOS 5.0(Next)】

HarmonyOS应用开发实战-开箱即用的首页页面构建与ArkTS解析【HarmonyOS 5.0(Next)】 一、HarmonyOS Next 5.0的优势 AI能力:HarmonyOS Next 5.0通过系统级AI能力,将AI下沉至操作系统并赋能给多个子系统,从而提升了应用的智能化体验。例如,小艺助手在HarmonyOS Next 5.0中…

JavaWeb案例整体分析---》差旅费报销管理信息系统-数据库操作和Mybatis配置

数据库操作 ` CREATE TABLE ter_businessapply( id VARCHAR(8) PRIMARY KEY, name VARCHAR(50) NOT NULL, position VARCHAR(50) NOT NULL, department VARCHAR(50) NOT NULL, destination VARCHAR(100) NOT NULL, departure_date varchar(30) NOT NULL, return_date varchar(3…

深度科普文:细数倾斜摄影数据的缺点

详细介绍了倾斜摄影数据应用到三维可视化项目中的一些缺点。1. 引言 写这篇文章的起因是最近遇到一个使用倾斜摄影数据应标的三维可视化项目,业主认为倾斜摄影数据加载很卡,要求能浏览场景的时候能立刻显示出当前的场景最精细的模型,如下图1所示。其实这个问题遇到的次数还真…

Linux 性能调优命令

from pixivPS ps auxfps:显示系统中当前的进程信息。 a:显示与终端无关的所有进程(即显示所有用户的进程)。 u:以用户友好的格式显示进程信息,包括用户、CPU 和内存使用情况。 x:显示没有控制终端的进程,例如守护进程(daemon)。 f:以 ASCII 字符显示进程的树状结构,…

使用hackbar进行跨库注入

第一步 http://192.168.1.117/sqli-labs/Less-1/?id= union select 1,2,3 --+ //构建语句

Linux编写一个自己的命令

Linux编写一个自己的命令 编译一个.c文件,生成可执行文件out。out只有在当前目录下可以执行。 而命令可在任何路径执行想让out可以在任意路径执行,有以下两种办法 1、将执行文件添加到 /bin/ 路径下(专门存放可执行文件)添加到 /bin/ 路径下后,在任何路径都可识别到程序2、…

离开Jetbrains拥抱VsCode: 离开大便拥抱大便

文章讨论了作者从Jetbrains转向VsCode的原因,主要集中在AI编程支持和个性化体验上。Jetbrains在AI Coding的支持方面表现不佳,如更新速度慢、功能不足等,使得作者感到不满;而Jetbrains自己开发的AI Assistant也未能提供满意的体验。相对而言,VsCode在插件系统和自由度上表…

第十一篇:下载网站与动态网站架构

视频下载网站网站名:视频下载网站 域名:video.download.cn 站点目录:/app/code/vide/ 需求:浏览器打开后,显示目录结构 增加svip认证功能 增加统计功能(统计nginx服务的访问等状态)autoindex模块 自动索引功能(列表站点目录的内容),首页文件不存在autoindex模块 说明…

P1438 无聊的数列

链接:https://www.luogu.com.cn/problem/P1438 题面:思路: 差分+线段树。 刚开始的想法是建立一个双tag线段树:basetag和addtag。然后传递的时候basetag就是l的基准,addtag不变。求的话就是求节点值。 但是这样容易溢出。。。 所以考虑差分:利用前缀和代替当前某一点的值…

2024.12.22

数学归纳法常用公式\((a+b)^n\) \((a+b)^n\)的系数是杨辉三角的某一层,a升幂排列,b降幂排列 同理可得\((a-b)^n\),可以看作(\(a+(-b))^2\),与上面相同。

【PHP安全】php程序源码保护技术

一、基本介绍二、加密方式2.1 源码混淆处理2.1.1 PHP 威盾混淆2.1.2 php-obfuscator2.2 YAK Pro混淆处理2.3 源码外壳加密2.3.1 PHP Eval加密2.3.2 PHP Eval变异2.3.3 phpjiami处理2.4 源码扩展加密2.4.1 php-beast2.4.2 Zend Guard文末小结一、基本介绍 PHP语言作为脚本语言的…

[长期活动] 【4Z-API】每5楼抽取1位送10美金API额度,20%中奖机会!

​ 活动详情 活动时间: 长期有效 奖励内容: 每5楼抽取1位幸运用户,送价值10美金API额度 ** 参与方式** 登录 4Z API域名巧记:ZZZZAPI.com 4个Z然后API 简单好记:4Z= ZZZZAPI.com 每5个楼层将抽取1位幸运用户4Z-API优势稳定高速的API服务超值定价,性价比之选7x24小时技术支持…