我是PyAv
库的新手,或者一般的音频编程新手,所以我对任何错误表示歉意。
我正在尝试从mp4 file
加载和打印原始音频数据
我试着读“cookbook
”和“google
”,我有点困惑。
如果我的理解是正确的,我应该从框架中得到飞机,然后对它进行解码,但我不知道具体是怎么回事。
如能提供有关这一问题的任何资料,将不胜感激。
container = av.open(
'/Users/ufk/Downloads/1.mp4')
for packet in container.demux():
for frame in packet.decode():
if isinstance(frame, av.audio.frame.AudioFrame):
layout = frame.layout
channels = layout.channels
(chl, chr) = channels
print (frame,
frame.format,
frame.layout,
frame.rate,
frame.samples)
print (chl, chr)
for plane in frame.planes:
print(plane)
发布于 2022-08-02 13:15:36
感谢Tim在注释中的帮助,我开始使用numpy数组,我创建了一个空数组并将其附加到每个框架中。当然,音频只有几秒钟,所以它不会消耗内存,我绘制了数据,以确保我正确地看到它,它看起来很好。
所以密码:
import av
import numpy as np
import matplotlib.pyplot as plt
container = av.open(
'2.mp3')
data = np.empty(shape=0)
for packet in container.demux():
for frame in packet.decode():
if isinstance(frame, av.audio.frame.AudioFrame):
layout = frame.layout
channels = layout.channels
(chl, chr) = channels
print(frame,
frame.format,
frame.layout,
frame.rate,
frame.samples)
print(chl, chr)
array = frame.to_ndarray()[0]
data = np.concatenate([data, array])
plt.subplot(2, 1, 1)
plt.title("Original audio signal")
plt.plot(data)
plt.grid()
plt.tight_layout()
plt.show()
其结果是:
https://stackoverflow.com/questions/73198826
复制相似问题