sounddevice通过ffmpeg读取rstp远程网络设备声音;conda环境里用不了电脑系统环境里的应用ffmpeg

news2024/9/23 15:27:41

1、sounddevice通过ffmpeg读取rstp远程声音

*** samples维度是samples_per_read指定 ***

##用全路径,调用系统ffmpeg,直接conda里运行不然容易出错
C:/Users/loong/.conda/envs/nlp/python.exe  D:\sound\ffmpeg_test.py

ffmpeg_test.py:

import sounddevice as sd
import numpy as np
import ffmpeg

# 音频设置
sample_rate = 44100
channels = 1
samples_per_read = 1024

# 打开RTSP流并连接到音频部分
# rtsp_url = 'rtsp://username:password@ip_address:port/stream_path'
rtsp_url = "rtsp://a******nnels/2?tcp"

input_stream = ffmpeg.input(rtsp_url).audio
print("##"*18)
print("input_stream:",input_stream)
print("##"*18)
# 配置音频处理管道和音频流
ffmpeg_process = (
    input_stream.output('pipe:', format='wav')
    .run_async(pipe_stdout=True)
    .stdout
)

# ffmpeg_process = ffmpeg.input(
#         rtsp_url
#     ).output(
#         'pipe:',
#         format='f32le',
#         acodec='pcm_f32le',
#         ac=channels,
#         ar=sample_rate,
#         loglevel='quiet',
#     ).run_async(pipe_stdout=True)

# 创建音频流
with sd.InputStream(channels=channels, dtype='float32', samplerate=sample_rate) as stream:
    while True:
        # 从FFmpeg进程中读取音频数据
        data = ffmpeg_process.read(samples_per_read * channels * 4)  # 每个样本32位浮点数,乘以4
        if not data:
            break

        # 将音频数据转换为浮点数数组
        samples = np.frombuffer(data, dtype=np.float32)
        print(samples.shape, samples)
        # 根据需要进行音频处理
        # ...

        # 在此处可以使用处理后的音频数据
        # ...

        # 读取下一批音频数据
        samples, _ = stream.read(samples_per_read)  # 阻塞式读取

# 停止FFmpeg进程,释放资源
ffmpeg_process.wait()
ffmpeg_process.terminate()

在这里插入图片描述

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

import ffmpeg

stream = 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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Revit添加自己的快捷键和一键剪切

一、Revit中如何自己添加快捷键 我们用Revit做模型时,快捷键可以加快我们的操作速度,提高工作效率。那么我们如何自己添加快捷键呢,下面请看步骤。 1、 点击“视图”,最右“用户界面” 2、 点击“快捷键”,过滤器为“全…

vue2/vue3中,H5自动生成骨架屏代码

generate-skeleton-h5 vue2/vue3自动生成h5骨架屏 安装骨架屏插件 npm i draw-page-structure -D页面引入 import { generateSkeleton } from "generate-skeleton-h5" generateSkeleton().then(res > {// 当前页面的骨架屏代码,含html与cssconsole…

Flutter学习四:Flutter开发基础(四)包管理

目录 0 引言 1 包管理 1.1 简介 1.2 Pub仓库 1.3 依赖Pub仓库 1.3.1 查找包 1.3.2 添加包 1.3.3 下载包 1.3.4 引入包 1.3.5 使用包 1.4 其他依赖方式 1.4.1 依赖本地包 1.4.2 依赖git仓库 1.4.3 不常用的依赖方式 0 引言 本文是对第二版序 | 《Flutter实战第二版…

一文搞懂JSON

目录 什么是JSON? JSON的基本数据类型 JSON的特点和优势(了解) JSON格式规范(重点) JSON的基本操作 关键接口的梳理 序列化 反序列化 答案和解析 序列化答案 反序列化答案 第一种思路 第二种思路 什么是JSON? JSO…

Linux4.vim

1.vim 三种模式 : 命令模式的常见命令 : 底行模式 : 2.sudo 信任名单的位置 : /etc/sudoers 添加信任名单 :以root身份,使用vim打开信任名单,显示行号,大概在104行。

数字化车间数字孪生可视化提高资产利用率

车间管理中往往存在以下几方面问题: 1、产品加工过程复杂、工序繁多;产品在生产制造过程中由于设备和工艺等原因产生不确定因素会影响最终产品质量; 2、生产计划制定困难、生产任务无法及时完成导致生产计划执行困难; 3、业务需求不明确或变化频繁造成车间管理工作无…

360手机驱动提取 360手机驱动安装 360手机高通驱动

360手机驱动提取 360手机驱动安装 360手机高通驱动 参考:360手机-360刷机360刷机包twrp、root 360刷机包360手机刷机:360rom.github.io 【360手机驱动提取】 注:期间手机提示授权,请勾选同意 打开手机:开发者模式&a…

楚天云淡风更长--2023华为主题创意工作坊武汉站侧记

create:2023-06-28 楚 三镇锁大江 名城历千秋。 华中重地,中心城市优势引领区域经济发展。 无论是古老的楚越文化、离骚诗赋, 还是后世追起的黄鹤高楼、千载悠悠, 或是明清以降的开风气之先河, 又以工业重镇立于现代城市之林&am…

【Servlet学习三】实现一个简单的数据库版本的留言墙!

目录 一、前期环境搭建 二、具体后端代码实现 🌈1、创建数据库 🌈2、创建message类:定义属性和相应的get和set方法 🌈3、创建JDBC工具类:DBUtil文件,定义一些数据库的基本操作 🌈4、创建m…

浅谈注册表读取所需要付出的性能代价

Windows 系统的特色功能,注册表,是一个十分方便有用的工具。它可以用来以一种统一和多线程安全的方式来永久性的保存数据。如果你将数据保存在 HKEY_CURRENT_USER 键下,则数据可以随着用户一起漫游,并且可以保护单个键值 (即使是在…

1 Prometheus-监控简介

目录 1 什么是监控 1.1 技术作为客户 1.2 业务作为客户 2. 监控基础知识 2.1 事后监控 2.2 机械式/模板式/无脑式监控 2.3 不够准确的监控 2.4 静态监控 2.5 不频繁的监控 2.6 缺少自动化或操作繁琐/不便 2.7 监控模式总结 3.监控机制 3.1 探针和内省 3.2 拉取和推…

视觉大模型应该长什么样

背景 最近朋友圈一直可以看到一个论调,视觉没有一个chatgpt一样强大的模型。似乎确实如此,视觉确实是缺一个通用能力的大模型;有些小伙伴可能就会讲了数据怎么能讲没有大模型:diffusion、della、muse、sam、controlnet一堆的大模…

springboot在启动时做点什么

Component public class ApplicationInitListener implements ApplicationListener<ContextRefreshedEvent> {Overridepublic void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {System.out.println("ContextRefreshedEvent.....容器初始化完…

Java 集合继承关系图

Java 容器类库的用途是“保存对象”&#xff0c;并划分为两大类,序列Collection和健值对 Map Collection接口&#xff1a;一个独立元素的序列&#xff0c;衍生的2个子类接口 List接口&#xff1a;存储有序的、可重复的数据 实现类: ArrayList、LinkedList、Vector Set接口&am…

SSMP整合案例(9) 统一表现层数据返回格式

上文 SSMP整合案例(8) Restful开发表现层接口 我们就已经是把表现层的接口写完了 但是 我们会发现 现在前端人员拿到我们的数据 格式看着非常的乱 我们 数据库 添加 修改 删除 就是但数据的格式 一个 布尔值 查询 就是 查多个 一个集合 查询 全部 则就是 一个对象的格式 还有分…

Linux 学习记录41(C++篇)

Linux 学习记录41(C篇) 本文目录 Linux 学习记录41(C篇)一、C中的引用1. 引用的定义2. 引用的注意事项3. 引用的基本使用4. 引用作为函数的入口参数5. 引用作为函数的返回值6. 常引用7. 结构体引用8. 指针和引用的区别 二、C中的动态内存分配1. new关键字(1. 申请单个类型的空间…

AI建模工具对比:如何选择适合你的工具套件

在人工智能&#xff08;AI&#xff09;的浪潮下&#xff0c;越来越多的企业和科研机构开始应用AI技术进行建模和分析。然而&#xff0c;选择哪种AI建模工具套件一直是一个让人挠头的问题。市面上存在着众多的AI建模工具&#xff0c;它们各有特点和优势&#xff0c;但如何找到适…

SpringBoot启动失败,也不报错

1&#xff09;将启动类添加try-catch捕获信息 在springboot的启动类中添加try-catch即可出现具体错误信息&#xff1b; try {SpringApplication.run(ConverterApplication.class, args);} catch (Exception e) {System.out.println("e.getMessage() " e.getMessage…

海运费查询:了解国际海运费的方法与注意事项

国际贸易中&#xff0c;海运是一种常见的货物运输方式。而对于企业或个人来说&#xff0c;了解和查询国际海运费是非常重要的。本文将介绍一些查询国际海运费的方法和注意事项&#xff0c;帮助您更好地掌握海运费用信息。 一、国际海运费的计算方法 FCL&#xff08;整箱&#…

祖冲之算法

祖冲之算法 1.题目描述 π 3.1415926~3.1415927之间 4/1-4/34/5-4/74/9-4/114/13.......... 通过关系,来计算 运算多少次之后,才会得到3.1415926~3.1415927之间2.代码 public class Main2 {public static void main(String[] args) {double ltargetPi3.1415926;double rtarg…