You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在After Effects脚本中获取音频层的采样率与波形数据?

获取音频采样率与波形数据的实现方案

完全可行,以下是几种主流脚本实现方式:

Python 脚本实现

方法1:使用标准库 wave(无额外依赖)

适合处理WAV格式音频,无需安装第三方包,代码轻量:

import wave
import numpy as np

# 打开音频文件
with wave.open("your_audio.wav", "rb") as wf:
    # 获取采样率
    sample_rate = wf.getframerate()
    print(f"采样率: {sample_rate} Hz")
    
    # 获取声道数、量化位数
    num_channels = wf.getnchannels()
    sample_width = wf.getsampwidth()
    
    # 读取所有波形帧数据
    frames = wf.readframes(wf.getnframes())
    # 将二进制帧转换为数值数组
    if sample_width == 2:
        # 16位量化
        wave_data = np.frombuffer(frames, dtype=np.int16)
    elif sample_width == 4:
        # 32位量化
        wave_data = np.frombuffer(frames, dtype=np.int32)
    else:
        # 8位量化
        wave_data = np.frombuffer(frames, dtype=np.uint8)
    
    # 如果是多声道,拆分数据
    if num_channels > 1:
        wave_data = np.reshape(wave_data, (-1, num_channels))
    
    print(f"波形数据形状: {wave_data.shape}")

方法2:使用 librosa(支持更多音频格式)

适合MP3、FLAC等非WAV格式,需要先安装:pip install librosa

import librosa

# 加载音频,返回波形数据和采样率
wave_data, sample_rate = librosa.load("your_audio.mp3", sr=None)
# sr=None 表示保留原始采样率,若指定数值则会重采样

print(f"采样率: {sample_rate} Hz")
print(f"波形数据形状: {wave_data.shape}")
# wave_data是归一化后的浮点数组(范围[-1, 1])

Shell 脚本实现(使用FFmpeg)

如果是shell脚本场景,FFmpeg可以快速提取采样率和导出波形数据:

# 获取采样率
sample_rate=$(ffprobe -v error -select_streams a:0 -show_entries stream=sample_rate -of default=noprint_wrappers=1:nokey=1 your_audio.mp3)
echo "采样率: ${sample_rate} Hz"

# 导出波形数据到文本文件(每行一个采样值,16位有符号整数)
ffmpeg -i your_audio.mp3 -f s16le -acodec pcm_s16le - | hexdump -v -e '/1 "%d\n"' > wave_data.txt

关键说明

  • 采样率是音频的核心参数,所有音频处理库/工具都能直接获取;
  • 波形数据本质是音频的采样点数值集合,不同格式的音频会有不同的量化位数(8/16/32位),转换时需注意对应的数据类型;
  • 多声道音频的波形数据通常是交错存储,需要按声道拆分处理。

内容的提问来源于stack exchange,提问作者noahship

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 06:46:02