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

[python]python利用pyaudio录制系统声音没有立体声混音怎么录制系统音频

当电脑没有立体声混音导致Python写代码无法使用pyaudio进行录制系统声音怎么办?查阅资料和安装驱动等方法都不行,难道没办法了吗?那为什么电脑其他软件可以做到呢?因此研究了一下pyaudio在没有立体声混音情况下确实无法录制声音,而且其他比较流行的录制声音模块都试过不行,比如scikit声音模块,因此找到一个模块能录制系统声音,尤其speaker声音很重要,否则python编程没法录制系统声音岂不是表明自己编程太烂了?最终发现一个模块十分好用而且可以录制系统声音不需要设置什么立体声混音操作。我的电脑是暗影精灵6plus结果根本没有立体声混音如下:

 

正常情况下人家是这样的

 

但是我尝试了很多方法甚至重装声卡驱动都没用,据说是主板不支持。难道python就没法用系统录音了吗,如果有立体声混音一般用下面代码即可录制

import numpy as np
from PIL import ImageGrab
import cv2
import pyaudio
import threading
import wave
import time
import ffmpeg
import getpass
import subprocess
import os# 录音类
class Recorder():def __init__(self, chunk=1024, channels=2, rate=44100):self.CHUNK = chunkself.FORMAT = pyaudio.paInt16self.CHANNELS = channelsself.RATE = rateself._running = Trueself._frames = []# 获取内录设备序号,在windows操作系统上测试通过,hostAPI = 0 表明是MME设备def findInternalRecordingDevice(self, p):# 要找查的设备名称中的关键字target = '立体声混音'# 逐一查找声音设备for i in range(p.get_device_count()):devInfo = p.get_device_info_by_index(i)if devInfo['name'].find(target) >= 0 and devInfo['hostApi'] == 0:# print('已找到内录设备,序号是 ',i)return iprint('无法找到内录设备!')return -1# 开始录音,开启一个新线程进行录音操作def start(self):threading._start_new_thread(self.__record, ())# 执行录音的线程函数def __record(self):self._running = Trueself._frames = []p = pyaudio.PyAudio()# 查找内录设备dev_idx = self.findInternalRecordingDevice(p)if dev_idx < 0:return# 在打开输入流时指定输入设备stream = p.open(input_device_index=dev_idx,format=self.FORMAT,channels=self.CHANNELS,rate=self.RATE,input=True,frames_per_buffer=self.CHUNK)# 循环读取输入流while (self._running):data = stream.read(self.CHUNK)self._frames.append(data)# 停止读取输入流stream.stop_stream()# 关闭输入流stream.close()# 结束pyaudiop.terminate()return# 停止录音def stop(self):self._running = False# 保存到文件def save(self, fileName):# 创建pyAudio对象p = pyaudio.PyAudio()# 打开用于保存数据的文件wf = wave.open(fileName, 'wb')# 设置音频参数wf.setnchannels(self.CHANNELS)wf.setsampwidth(p.get_sample_size(self.FORMAT))wf.setframerate(self.RATE)# 写入数据wf.writeframes(b''.join(self._frames))# 关闭文件wf.close()# 结束pyaudiop.terminate()# ffmpeg将音视频合并
def comband_av(AUDIO, VIDEO):  # 音频视频合并os.getcwd()user_name = getpass.getuser()str_txt = 'C:/Users/' + user_name + '/Desktop/'os.chdir(str_txt)cmd = f"ffmpeg -i {AUDIO} -i {VIDEO} comband_va.mp4 -y"subprocess.call(cmd, shell=True)if __name__ == "__main__":os.getcwd()user_name = getpass.getuser()str_txt = 'C:/Users/' + user_name + '/Desktop/'os.chdir(str_txt)# 设置录制参数SCREEN_SIZE = (2560, 1600)FILENAME = 'recorded_video.avi'FPS = 30.0# 开始录制画面fourcc = cv2.VideoWriter_fourcc(*"XVID")out = cv2.VideoWriter(FILENAME, fourcc, FPS, SCREEN_SIZE)# 开始录制音频rec = Recorder()begin = time.time()rec.start()cnt = 0print('recording..')while True:# 获取屏幕截图# img = pyautogui.screenshot()img = ImageGrab.grab(bbox=(0, 0, 2560, 1600))# 转换为OpenCV格式frame = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR)# 写入视频文件out.write(frame)# cv2.imshow('Frame', frame)# cv2.resizeWindow('Frame', 1920, 1080)# # 检测按键# if cv2.waitKey(1) == ord('q'):#     breakcnt = cnt + 1if cnt == 300:rec.stop()t = time.time() - beginprint('录制时间为%ds' % t)rec.save("recorded_audio.wav")break# 停止录制out.release()cv2.destroyAllWindows()comband_av("recorded_audio.wav", "recorded_video.avi")  # 音频文件名,视频文件名自定义

 但是立体声混音,在声音设备根本没有,因此找到一个模块可以很好解决录制系统声音问题,视频演示如下:

python利用pyaudio录制系统声音没有立体声混音怎么录制系统音频_哔哩哔哩_bilibili当电脑没有立体声混音导致Python写代码无法使用pyaudio进行录制系统声音怎么办?查阅资料和安装驱动等方法都不行,难道没办法了吗?那为什么电脑其他软件可以做到呢?因此研究了一下pyaudio在没有立体声混音情况下确实无法录制声音,而且其他录制声音模块都试过不行,因此找到一个模块能录制系统声音,尤其speaker声音很重要,否则python编程没法录制系统声音岂不是表明自己编程太烂了?最终发现, 视频播放量 5、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 未来自主研究中心, 作者简介 未来自主研究中心,相关视频:地表最强模糊图片变清晰软件Topaz Photo AI2.2.2去升级集成全部离线模型完整版 ,最新版本解压即用,超强超稳定,一键抠图,无损放大,附赠模型,基于yolov8+bytetrack实现目标追踪视频演示,用opencv和onnxruntime去部署yolov5-7-8,C#opencvsharp进行图片拼接图像的stitch拼接,基于yolov8+deepsort实现目标追踪视频演示,yolov3 yolov4 yolov7训练助手2.1支持yolov7一键训练全程不用写代码傻瓜式操作,使用C++部署yolov8的onnx和bytetrack实现目标追踪,基于yolov3口罩检测识别系统训练和测试,使用C#的winform部署yolov8的onnx实例分割模型,将yolov5-6.2封装成一个类几行代码完成语义分割任务icon-default.png?t=N7T8https://www.bilibili.com/video/BV1qc411k7En/?vd_source=989ae2b903ea1b5acebbe2c4c4a635ee

 源码下载地址:

相关文章:

[python]python利用pyaudio录制系统声音没有立体声混音怎么录制系统音频

当电脑没有立体声混音导致Python写代码无法使用pyaudio进行录制系统声音怎么办&#xff1f;查阅资料和安装驱动等方法都不行&#xff0c;难道没办法了吗&#xff1f;那为什么电脑其他软件可以做到呢&#xff1f;因此研究了一下pyaudio在没有立体声混音情况下确实无法录制声音&a…...

使用echarts的bmap配置项绘制区域轮廓遮罩

示例图 代码 <template><div id"map" style"width: 100%; height: 100vh"></div> </template><script> import * as echarts from "echarts"; import "echarts/extension/bmap/bmap"; export default…...

第3章 【课后习题】(完整版)

【3.18】写出下面程序的运行结果 //3.18写出下面程序的运行结果 #include <iostream> using namespace std; class test{public:test();~test() {};private:int i; }; test::test() {i25;for(int ctr0;ctr<10;ctr){cout<<"Counting at "<<ctr…...

redis安装与配置

目录 1. 切换到 root 用户 2. 搜索安装包 3. 安装 redis 4. 查看 redis 是否正常存在 5. 修改ip 6. 重新启动服务器 7. 连接服务器 1. 切换到 root 用户 通过 su 命令切换到 root 用户。 2. 搜索安装包 apt search redis 这里安装的是下面的版本&#xff1a; 3. 安装 …...

kotlin first/last/indexOf/elementAt

kotlin 中 first 是取集合元素中第一个元素 last 是取集合元素中最后一个元素 indexOf 根据元素寻找下标&#xff0c;默认是第一个 elementAt 根据下标找元素 下面写一个demo 说明下他们几个的使用 val list listOf("A", "D", "A", "…...

计算机网络——网络中要解决的问题

1. 从网络管理的角度看 1.1 配置管理 追踪所有部署的硬件和软件资源&#xff0c;包括设备配置和软件版本。 1.2 故障管理​​​​​ 监控设备的运行状态&#xff0c;以确保所有组件都正常工作&#xff0c;以及快速响应和修复任何故障。 1.3 计费管理 监控资源消耗并进行计费…...

初识STL

目录 ​&#x1f4a1;STL &#x1f4a1;STL六大组件 &#x1f4a1;三大组件介绍 &#x1f4a1;容器 &#x1f4a1;算法 &#x1f4a1;迭代器 &#x1f4a1;示例 &#x1f4a1;STL C STL&#xff08;标准模板库&#xff09;是一套功能强大的 C 模板类&#xff0c;提供了…...

程序员副业之无人直播助眠

介绍和概览 大家好&#xff0c;我是小黑&#xff0c;本文给大家介绍一个比较轻松简单的副业&#xff0c;无人直播助眠副业。 这个项目的核心就是通过直播一些助眠素材来赚钱。比如你可以放一些舒缓的雨声之类的&#xff0c;吸引观众进来。然后&#xff0c;咱们可以挂个小程序…...

imazing破解版百度云2.17.3(附激活许可证下载)

iMazing是一款强大的 iOS 设备管理软件&#xff0c;不管是 iPhone、iPad 或 iPod Touch 设备&#xff0c;只要将 iOS 设备连接到计算机&#xff0c;就可以处理不同类型的数据。 iPhone 和 iPad 备份 借助 iMazing 的独有 iOS 备份技术&#xff08;无线、隐私和自动&#xff09…...

VS+QT五子棋游戏开发

1、首先安装好VS软件和QT库&#xff0c;将其配置好&#xff0c;具体不在此展开说明。 2、文件结构如下图&#xff1a; 3、绘制棋盘代码&#xff0c;如下&#xff1a; void Qwzq::paintEvent(QPaintEvent* event) {QPainter painter(this);painter.setRenderHint(QPainter::An…...

SpringBoot中动态注册接口

1. 说明 接口注册&#xff0c;使用RequestMappingHandlerMapping来实现mybatis中动态执行sql使用github上的SqlMapper工具类实现 2. 核心代码片段 以下代码为spring动态注册接口代码示例 Autowired private RequestMappingHandlerMapping requestMappingHandlerMapping;publ…...

CSS 实现两个圆圈重叠部分颜色不同

这是期望实现的效果&#xff0c;由图可知&#xff0c;圆圈底图透明度是0.4&#xff0c;左侧要求重叠部分透明度是0.7&#xff0c;所以不能通过简单的透明度叠加来实现最右侧的效果。 这就需要另外新建一个图层来叠加在两个圆圈重叠上方。 直接看代码 .circle_hight {width: 1…...

【数据库系统概念】第7-14章集合

文章目录 第七章 数据库设计和E-R模型&#xff08;重点&#xff01;&#xff01;&#xff01;&#xff09;~~7.1 设计过程概览&#xff08;了解&#xff09;~~7.1.1 设计阶段7.1.2 设计选择 7.2 实体-联系模型&#xff08;重点掌握&#xff09;7.2.1 实体集7.2.2 联系集联系集的…...

Kibana

Kibana是一个针对Elastic Search的开源分析及可视化的平台&#xff0c;使用kibana可以查询、查看并与存储在ES索引的数据进行交互操作&#xff0c;可以理解为一个客户端的工具&#xff0c;比如mysql和navicat。 使用kibana能执行高级的数据分析&#xff0c;并能以图表、表格和地…...

C#使用 OpenHardwareMonitor获取CPU或显卡温度、使用率、时钟频率相关方式

C# 去获取电脑相关的基础信息&#xff0c;还是需要借助 外部的库&#xff0c;我这边尝试了自己去实现它 网上有一些信息&#xff0c;但不太完整&#xff0c;都比较零碎&#xff0c;这边尽量将代码完整的去展示出来 OpenHardwareMonitor获取CPU的温度和频率需要管理员权限 在没…...

K8S--- volumesvolumeMount

一、Volume 简介 在容器当中的磁盘文件(on-disk file )是短暂的(ephemeral),这会对重要的应用程序或者数据产生一些问题。当容器崩溃或停止时,会出现一个问题,即容器状态不会被保存,因此在容器生命周期内被创建或者修改的文件都将丢失。在容器崩溃期间,kubelet会以干净状…...

AntV-G6 -- 将G6图表应用到项目中

1. 效果图 2. 安装依赖 npm install --save antv/g6 3. 代码 import { useEffect } from alipay/bigfish/react; import G6 from antv/g6;const data {id: root,label: 利息收入,subLabel: 3,283.456,ratio: 3,children: [{id: child-a,label: 平均利息,subLabel: 9%,ratio:…...

第二百五十回

文章目录 1. 概念介绍2. 使用方法2.1 简单用法2.2 自定义用法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"三方包open_settings"相关的内容&#xff0c;本章回中将介绍另外一个三方包&#xff1a;bluetooth_enable_fork.闲话休提&#xff0c;让我们一起Talk Flu…...

如何把硬盘(分区)一分为二?重装系统的小伙伴不可不看

注意事项&#xff1a;本教程操作不当会导致数据丢失 请谨慎操作 请谨慎操作 请谨慎操作 前言 相信各位小伙伴都会切土豆吧&#xff0c;本教程就是教大家如何切土豆切得好的教程。 啊哈哈哈&#xff0c;开玩笑的。 比如你有一个D盘是200GB&#xff0c;想要把它变成两个100G…...

【AI视野·今日NLP 自然语言处理论文速览 第六十六期】Tue, 31 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Tue, 31 Oct 2023 (showing first 100 of 141 entries) Totally 100 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers The Eval4NLP 2023 Shared Task on Prompting Large Language Models a…...

重新定义AI助手体验:突破Cursor Pro限制的5个技术方案

重新定义AI助手体验&#xff1a;突破Cursor Pro限制的5个技术方案 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your tri…...

手把手教你用AI超分镜像:低清图片3倍放大,细节修复超简单

手把手教你用AI超分镜像&#xff1a;低清图片3倍放大&#xff0c;细节修复超简单 1. 为什么你需要这个AI超分工具&#xff1f; 你是不是也遇到过这些头疼的情况&#xff1f; 翻出十几年前的老照片&#xff0c;想打印出来&#xff0c;却发现画面模糊得像蒙了一层雾。从网上下…...

DeerFlow2.0 Docker + 本地 Ollama qwen3.5:9b 部署指南

DeerFlow2.0 Docker 本地 Ollama qwen3.5:9b 部署指南 实现 Token 自由&#xff01;&#xff01;&#xff01;本地模型免费 &#xff1a;&#xff09; 1. 前提条件 Windows 11 家庭版&#xff08;版本号 25H2&#xff09;Docker Desktop 已安装并运行WSL2 已安装并配置Olla…...

别再花冤枉钱!和腰突颈椎病斗了 3 年,我终于踩中了康复的捷径

有没有和我一样的打工人&#xff0c;每天久坐 8 小时起步&#xff0c;下班就低头刷手机&#xff0c;年纪轻轻颈椎腰椎先 “垮了”&#xff1f; 从最开始的脖子发酸、腰部发僵&#xff0c;到后来疼到睡不着觉、手麻到握不住鼠标&#xff0c;甚至走路都直不起腰&#xff0c;这 3…...

重塑机械键盘体验:ZMK固件的革新之旅与实践指南

重塑机械键盘体验&#xff1a;ZMK固件的革新之旅与实践指南 【免费下载链接】zmk ZMK Firmware Repository 项目地址: https://gitcode.com/gh_mirrors/zm/zmk 在机械键盘的世界里&#xff0c;固件如同键盘的灵魂&#xff0c;决定着它的响应速度、功能拓展性和个性化程度…...

如何高效配置Kodi PVR IPTV Simple:专业级家庭IPTV直播系统部署指南

如何高效配置Kodi PVR IPTV Simple&#xff1a;专业级家庭IPTV直播系统部署指南 【免费下载链接】pvr.iptvsimple IPTV Simple client for Kodi PVR 项目地址: https://gitcode.com/gh_mirrors/pv/pvr.iptvsimple Kodi PVR IPTV Simple是一款功能强大的开源IPTV客户端插…...

为什么Python社区推荐用pipx替代pip?以virtualenv安装为例演示工作流

为什么Python开发者应该用pipx替代pip&#xff1f;以virtualenv为例的完整隔离方案 当你在Ubuntu终端输入pip install virtualenv时&#xff0c;那个刺眼的externally-managed-environment错误提示就像一堵墙——这不是技术故障&#xff0c;而是Python生态进化的重要路标。传统…...

RouterOS网桥VLAN实战:从零构建安全隔离的二层虚拟网络

1. VLAN基础与RouterOS网桥概述 刚接触网络管理的朋友可能经常听到"VLAN"这个词&#xff0c;但总觉得它神秘莫测。其实VLAN就像给一栋办公楼划分不同部门&#xff1a;财务部、研发部、市场部各自有独立的办公区域&#xff0c;既保证了隐私安全&#xff0c;又避免了相…...

探索开源软件 FireGeo:地理空间数据处理的新选择

探索开源软件 FireGeo&#xff1a;地理空间数据处理的新选择 在地理空间数据处理的领域中&#xff0c;开源软件正以其独特的优势逐渐崭露头角&#xff0c;为众多专业人士和爱好者提供了丰富多样的工具。FireGeo 作为其中一款开源软件&#xff0c;正吸引着越来越多人的关注&…...

【Leetcode LCR 112】【记忆化搜索】矩阵中的最长递增路径

题目跳转 这一道题十分有意思(bushi)&#xff0c;我们来一起看一下 1.题目考点与理解 主要考点: 记忆化搜索DFS 的递归思想与状态定义方向遍历与边界合法性判断 主要理解: 重要理解1 : 不一定要从最小的111开始&#xff0c;每一个都需要遍历(贪心思想错误) 重要理解2&#…...