conda环境里用不了电脑系统环境里的应用ffmpeg;ffmpeg调用本地windows麦克风读取

1、 ffmpegzai conda环境里执行不了,在系统可以运行

import ffmpegstream = ffmpeg.input(r'D:\sound\222.mp4')
stream = ffmpeg.filter(stream, 'fps', fps=25, round='up')
stream = ffmpeg.output(stream, r'D:\sound\dummy2.mp4')
ffmpeg.run(stream)

会报错:
File “C:\Users\loong.conda\envs\nlp\lib\subprocess.py”, line 1435, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] 系统找不到指定的文件。
在这里插入图片描述
在这里插入图片描述

解决方法,用全部绝对路径执行可以正常运行

C:/Users/loong/.conda/envs/nlp/python.exe  D:\sound\ffmpeg_sounddevice.py

在这里插入图片描述

2、ffmpeg调用本地windows麦克风读取

查看设备名称名称:ffmpeg -list_devices true -f dshow -i dummy
在这里插入图片描述

ffmpeg_cmd = ["ffmpeg","-f", "dshow",  # 使用alsa作为音频输入设备"-i", "audio=麦克风阵列 (适用于数字麦克风的英特尔® 智音技术)",  # 使用默认的音频输入设备(麦克风)"-f", "s16le","-acodec", "pcm_s16le","-ar", "16000","-ac", "1","-"
]
ffmpeg_cmd = ["ffmpeg","-f", "dshow",  # 使用dshow作为音频输入设备(名字必须是这个,其他会报错)"-i", "audio=Microphone",  # 麦克风的设备名称"-f", "s16le","-acodec", "pcm_s16le","-ar", "16000","-ac", "1","-"
]

这个命令将使用dshow作为音频输入设备,以及指定使用名为Microphone的麦克风设备。如果你使用的麦克风设备名称不同,你可以将其替换为你实际使用的设备名称。

其他参数的含义与之前提到的Linux示例相同:-f s16le指定输出音频格式为16位无压缩PCM音频,-acodec pcm_s16le指定音频编解码器为16位无压缩PCM音频,-ar 16000指定采样率为16000Hz,-ac 1指定声道数为1(单声道)。

最后,输出文件名被替换为-,表示音频数据将通过标准输出进行流式传输,而不是写入到文件中。

请注意,以上命令参数适用于Windows系统,并使用了DirectShow作为音频输入设备。如果你在其他操作系统上运行,请使用相应的音频输入设备和命令参数。

import subprocessimport numpy as npffmpeg_cmd = ["ffmpeg","-f", "dshow",  # 使用alsa作为音频输入设备"-i", "audio=麦克风阵列 (适用于数字麦克风的英特尔® 智音技术)",  # 使用默认的音频输入设备(麦克风)"-f", "s16le","-acodec", "pcm_s16le","-ar", "16000","-ac", "1","-"
]# 创建FFmpeg进程
process = subprocess.Popen(ffmpeg_cmd,stdout=subprocess.PIPE,stderr=subprocess.DEVNULL,bufsize=1600
)# 读取和处理音频数据
while True:# 从FFmpeg进程中读取音频数据data = process.stdout.read(frames_per_read * channels * 2)  # 每个样本16位,乘以2if not data:break# 将音频数据转换为numpy数组samples = np.frombuffer(data, dtype=np.int16)samples = samples.astype(np.float32)# samples = MinMaxScaler(feature_range=(-1, 1)).fit_transform(samples.reshape(-1, 1))samples /= 32768.0  # 归一化到[-1, 1]范围##数据后续处理逻辑

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

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

相关文章

Centos 从0到N

0x00 前言 最近一直在搞虚拟机,索性写一篇记录一下全过程,免得下次再去到处查资料 0x01 ssh 首先修改配置文件 vi /etc/ssh/sshd_config 开启端口以及listen 保存后重启服务 systemctl restart sshd 开机自启 chkconfig sshd on0x02 安装基础工具…

支付宝沙箱支付详细教程(IDEA版)—2023最新版

😇作者介绍:一个有梦想、有理想、有目标的,且渴望能够学有所成的追梦人。 🎆学习格言:不读书的人,思想就会停止。——狄德罗 ⛪️个人主页:进入博主主页 🗼专栏系列:无 &#x1f33c…

基于Python+OpenCV的视频字符化(深度学习+机器视觉)含全部工程源码

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境OpenCV环境 模块实现1. 视频读取及处理2. 色素块识别与替换3. 视频合成4. 操作系统上的实现 系统测试工程源代码下载其它资料下载 前言 本项目利用 OpenCV 提供的轻量、高效的 C类和 Python 接口,实…

java抽象类中的静态方法

Java的抽象类中可以包含静态方法,即类方法。尽管抽象类不能实例化,但抽象类中的静态方法是可以用抽象类直接调用的。 下面的代码示例定义了一个抽象类AbstractDemo ,其中包含一个抽象方法method,一个public静态方法showMessage。…

Swin Transformer训练报错问题

1. 训练遇到报错问题 (1)mportError: cannot import name _pil_interp from timm.data.transforms 原因: timm.data.transforms里面没有_pil_interp,只有str_to_pil_interp、_str_to_pil_interpolation、_pil_interpolation_to_s…

AI开源路在何方丨2023智源大会精彩回顾

导读 当下,AI开源已经成为了人类开源创新的主战场,是超大规模人类智力协同的最佳组织形式。得益于开源协作持续不断地推进,AI在这个时代飞速发展。可以说如果没有开源社区建设,就不会有今天人工智能的成就。 在2023智源大会AI开源…

CSS 弹性布局

提示:这章比较重要,做复杂页面时经常会用到!会不断更新❗ 文章目录 前言主轴和侧轴flex-direction 主轴方向flex-wrap 折行justify-content 主轴排列方式flex-start:默认左对齐flex-end:右对齐center:居中s…

2018年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——纯享题目版

🏠个人主页:fo安方的博客✨ 💂个人简历:大家好,我是fo安方,考取过HCIE Cloud Computing、CCIE Security、CISP等证书。🐳 💕兴趣爱好:b站天天刷,题目常常看&a…

English Learning - L3 作业打卡 Lesson7 Day54 2023.6.29 周四

English Learning - L3 作业打卡 Lesson7 Day54 2023.6.29 周四 引言🍉句1: I daydreamed like I did as a little girl and I imagined myself walking gracefully, helping other people through my journey and snowboarding again.成分划分连读爆破语调 &#x…

mysql-数据迁移 及报错解决(ERROR 1290 (HY000)

文章目录 1. 物理迁移1. 迁移前,配置mysql的输出目录1. 查看mysql的输出目录2. 修改mysql的输出目录 2. 文件迁移 1. 物理迁移 1. 迁移前,配置mysql的输出目录 1. 查看mysql的输出目录 在安装MySQL的会限制了导入与导出的目录权限。只允许在规定的目录…

2-css-3

一 选择器 1 结构伪类选择器 作用:根据元素的结构关系查找元素。 选择器说明E:first-child查找第一个E元素E:last-child查找最后一个E元素E:nth-child(N)查找第N个E元素(第一个元素N值为1) li:first-child {background-color: green; }2 :…

一.《泽诺尼亚》背包物品数据分析和遍历

寻找突破口 1.首先寻找突破口,围绕一个“变”字去找 2.之前在别的课程中也给同学们说过,我们在找背包物品遍历,无非就是要先拿到物品对象 3.然而要拿到物品对象,必须先拿到物品属性,然后逆向分析拿到物品对象 4.那么问题来了, 怎么拿到物品属性呢? 5.这时候就要…