我想得到 原始数据 (最好作为 numpy 数组)来自 PCM 网络音频流我有一个网址。目标是分析来自网络流的信号 实时 .
似乎有很多 Python 音频模块或包装器,例如FFMPEG,但经过相当广泛的搜索后,我还没有找到完整管道的单个示例。
对于那些熟悉 OpenCV 的人,我正在寻找 OpenCV 的音频副本 VideoCampture
类(class)。
欢迎任何关于模块的建议或代码片段!
最佳答案
好的,想通了。显然,这可以在不使用任何外部库的情况下完成,只需依赖 urllib
和 wave
.这是一个流数据的代码片段,将其转换为 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/