python - Python中实时网络音频流的原始numpy数组

标签 python audio numpy ffmpeg pyaudio

我想得到 原始数据 (最好作为 numpy 数组)来自 PCM 网络音频流我有一个网址。目标是分析来自网络流的信号 实时 .

似乎有很多 Python 音频模块或包装器,例如FFMPEG,但经过相当广泛的搜索后,我还没有找到完整管道的单个示例。

对于那些熟悉 OpenCV 的人,我正在寻找 OpenCV 的音频副本 VideoCampture类(class)。

欢迎任何关于模块的建议或代码片段!

最佳答案

好的,想通了。显然,这可以在不使用任何外部库的情况下完成,只需依赖 urllibwave .这是一个流数据的代码片段,将其转换为 numpy 数组(例如用于处理),然后返回以将其保存到文件中。已针对 Python 3 进行了测试。

import urllib
import base64
import wave
import numpy as np

# Open the network wave stream
request = urllib.request.Request("http://url")
request.add_header('Authorization',
                   b'Basic ' + base64.b64encode(b'user:password'))
in_file = urllib.request.urlopen(request)
in_wave = wave.open(in_file, 'rb')

# Get parameters such as number of channels, framerate etc.
params = in_wave.getparams()

# Open and initialize an output file
out_wave = wave.open('/home/user/out.wav', 'wb')
out_wave.setparams(params)

while True:
    # Get N frames as byte array
    frame = in_wave.readframes(10000)
    # Convert the bytes to numpy array
    arr = np.fromstring(frame, 'Int16')
    # Write a numpy array into a wave file
    out_wave.writeframes(arr.tostring())

关于python - Python中实时网络音频流的原始numpy数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30550212/

相关文章:

google-chrome - 无法在Chrome浏览器的音频元素中寻找媒体以获取存储在Azure Blob中的音频

java - IOException java 音频

python - 使用 numpys np.fromfunction 评估 Python lambda 函数

python - 我怎样才能用我当前的数据拟合这个正弦波?

javascript - Django CreateView 未在提交表单时创建

c# - 在工作线程上创建的WinForms窗口未收到所有预期的消息

python - 删除列表中的元素,直到到达 Python 中的第一个空元素

python - numpy genfromtxt 转换器未知列数

python - Linux 上的 Sapi5?

python - 由于 Python 和 Selenium 中的元音变音而出现错误