色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

python畫視頻音波圖

周雨萌1年前7瀏覽0評論

Python是一種非常流行的編程語言,它可以進行很多有趣的任務,包括繪制視頻音波圖。這種圖像可以幫助我們更好地理解音頻信號的特性。

import numpy as np
import matplotlib.pyplot as plt
from moviepy.video.io.VideoFileClip import VideoFileClip
# 創建示例視頻文件
duration = 10 # 秒
fps = 30
width = 640
height = 480
fname = 'example.mp4'
def make_frame(t):
return np.sin(2*np.pi*440*t)*np.ones((height, width, 3))
clip = VideoFileClip(filename=fname, duration=duration, fps=fps)
clip = clip.fl(make_frame)
clip.write_videofile(filename=fname, fps=fps)
# 打開視頻文件并獲取音頻數據
clip = VideoFileClip(filename=fname)
audio = clip.audio
samples = audio.to_soundarray()[:,:,0]
# 繪制音波圖
fig, ax = plt.subplots()
ax.plot(samples)
ax.set_xlabel('Time (samples)')
ax.set_ylabel('Amplitude')
ax.set_title('Audio Waveform of Example Video')
plt.show()

這段代碼的作用是生成一個10秒鐘的示例視頻文件,然后使用MoviePy庫打開視頻文件,從中提取音頻數據,并使用Matplotlib庫繪制音波圖。

在代碼中,先是通過創建一個示例視頻文件來模擬真實情況下的操作。然后,使用MoviePy庫打開視頻文件,并從中提取播放音頻的AudioClip對象。AudioClip的to_soundarray()函數可以返回一個numpy數組,其中保存了音頻數據的每一個樣本(sample)的幅度。這個數組是一個3D的numpy數組,每一個樣本包含一個左聲道的樣本值和一個右聲道的樣本值。由于我們只需要一個聲道的數據,所以我們只用選擇第一個通道的值來繪制音波圖。

接下來,使用Matplotlib庫繪制音波圖。首先,創建一個子圖(subplot)對象,并調用plot函數將樣本幅度作為y軸的數據。x軸的數據為樣本的索引,因為每個樣本是以固定的時間間隔產生的,所以它們的索引對應于時間上的位置。接著,使用set_xlabel、set_ylabel和set_title設置x軸、y軸和標題。

最后,調用show函數顯示圖像。運行程序后,你應該能看到一個音波圖的窗口,它包含了整個示例視頻文件的音頻數據。