更改 mp3 文件的采样率

Posted

技术标签:

【中文标题】更改 mp3 文件的采样率【英文标题】:Changing sample rate of mp3 files 【发布时间】:2018-08-25 00:21:45 【问题描述】:

我有大量 mp3 文件,这些文件的采样率不适合我想在其中使用的外部硬件。有没有办法一次性更改它们,而不是通过大胆的方式逐个文件?

【问题讨论】:

【参考方案1】:

您应该提及您正在使用的操作系统...这适用于 linux

sudo apt install libav-tools  #  install needed tool

// 显示一个文件的内容

avprobe mysong.mp3 

它的输出底部说

Duration: 00:00:01.65, start: 0.000000, bitrate: 192 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, mono, s16p, 192 kb/s

好的,它是一个正常的 CD 质量 44.1kHz,所以让采样率降低一半到 22050kHz

avconv -i mysong.mp3   -ar 22050  mysong_22k.mp3 

验证我们现在拥有什么

avprobe mysong_22k.mp3 

Duration: 00:00:01.70, start: 0.050113, bitrate: 33 kb/s
Stream #0:0: Audio: mp3, 22050 Hz, mono, s16p, 32 kb/s

到目前为止一切顺利,现在让我们将其包装起来以查看一个目录中的所有文件

#!/bin/bash

for curr_song in $( ls *mp3 ); do

    echo
    echo "current specs on song -->$curr_song<--"
    echo

    curr_song_base_name=$curr_song%.*

    echo curr_song_base_name $curr_song_base_name

    curr_new_output=$curr_song_base_name_22k.mp3

    echo "avprobe  $curr_song "
          avprobe "$curr_song" 
    echo

    avconv -i $curr_song  -ar 22050  $curr_new_output

    echo now confirm it worked 
    echo

    avprobe $curr_new_output

done

这应该可以让您启动并运行...它对于没有空格的歌曲名称运行良好...代码在处理文件名中的空格时涉及更多...如果您有空格,请这么说,我会修改代码...它通过在文件名末尾添加 _22k 来剪切每个输出文件

input   songhere.mp3
output  songhere_22k.mp3

很容易给它一个不同的输出目录

【讨论】:

以上是关于更改 mp3 文件的采样率的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式降低上传的 MP3 文件的采样率 [关闭]

使用 NAudio/Lame 将 .wav 转换为 mp3 时如何设置通道和采样率?

更改 wav 文件的采样率和比特率而不会遇到打开文件的问题?

当我尝试更改采样率时,为啥 sox 会损坏我的 wav 文件?

使用 AudioConverter 更改采样率

libfdk_aac音频采样率和编码字节数注意