audio - 更改mp3文件的采样率

标签 audio mp3 sample-rate

我有大量的mp3文件,而不是我要在其中使用的外部硬件的正确采样率。是否可以通过一次性更改所有文件,而不是逐个文件地更改它们?

最佳答案

您应该提到您正在使用的操作系统...在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,因此可以将采样率降低一半至22050 kHz
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

它很容易为它提供不同的输出目录

关于audio - 更改mp3文件的采样率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49312176/

相关文章:

audio - 如何使用Garry的mod从文件夹中随机选择.wav/.mp3文件?

java:wav 文件无法播放,而其他文件则播放

android - 从站点/服务器流式传输 mp3

c# - 使用WasapiOut Naudio更改声卡的采样率

compression - 如何使用sox压缩mp3?

ios - 在UNNotificationService扩展程序的Push Notification Payload中修改 'sound'属性

swift - 如何在 swift iOS 中存储在 FileManager 上的音频文件上添加音频修剪?

mp3 - mp3 帧长度的公式

php - FFMPEG-PHP 代码示例修剪 MP3 文件

java - 如何从字节数组计算音频剪辑的持续时间?