用 ffmpeg 批量转 300 首现场录音,我才搞懂采样率不是越高越好
去年整理硬盘,翻出 2019 到 2022 年攒的三百多段现场录音,大多是手机和一支老 Zoom 录的,格式杂:m4a、wav、还有几段 96kHz 的。想统一成能直接扔进播放器、也能丢进 DAW 随手剪的格式,就用 ffmpeg 写了个循环。
第一版很粗糙:
for f in *.m4a; do
ffmpeg -i "$f" -ar 48000 -ac 2 "${f%.m4a}.wav"
done
跑完发现两个问题:一是手机上录的本来是单声道,硬转成双声道,文件大了一倍,听感没有任何变化;二是那几段 96kHz 的素材被降下来之后,高频那股“空气感”确实薄了一点,虽然盲听时我自己也分不太清。
后来改成先探再转:
for f in *.{m4a,wav}; do
ch=$(ffprobe -v error -select_streams a:0 \
-show_entries stream=channels -of csv=p=0 "$f")
ffmpeg -i "$f" -ar 48000 -ac "$ch" "${f%.*}.wav"
done
采样率统一到 48kHz,是因为这批素材最终要进视频剪辑和时间线对齐;如果只是纯听,44.1kHz 也完全够。96kHz 那几段我单独挑出来留在原采样率,没跟着批量走。
这件事让我重新想了一遍“高采样率”这件事。采样率决定的是能记录的最高频率,96kHz 理论上到 48kHz,但人耳上限就那样;真正影响这批录音听感的,是手机麦克风本身的底噪、现场空调的低频嗡声,还有录音位置离 PA 太近导致的削波。这些不是换个采样率能救的。
会失效的地方也很具体:ffprobe 对某些变量帧率的 m4a 偶尔报错,我就加了个判断,探不到声道数时直接跳过并记进日志;另外 -ac 传空值会让 ffmpeg 报错退出,循环里没兜住的话,后面全不跑。还有一次文件名带空格,没加引号,整批只转出一个文件,排查了半天。
现在这三百多段躺在同一个文件夹里,命名是“日期_地点_设备”。偶尔翻出来听,发现当年觉得录得最烂的那几段,反而是现在最想听的。
你们整理现场录音时,会保留原始采样率还是统一降下来?我到现在也没完全想清楚哪种更划算。
1
赞同度 8% · 0 条评论 · 19 阅读

0 条评论
还没有评论,写下第一条。