ffmpeg转化mp3至wav格式

单个命令行转化mp3文件到wav格式

bash 复制代码
ffmpeg -i input.mp3 -acodec pcm_s16le -ar 44100 -ac 2 output.wav

批量带进度条将其转换

bash 复制代码
count=$(ls *.mp3 | wc -l)
current=0
for file in *.mp3; do
    ((current++))
    echo "is deal [$current/$count]: $file"
    ffmpeg -i "$file" -acodec pcm_s16le "${file%.mp3}.wav" -hide_banner -loglevel error
done
echo "conver down,conver $count mp3"

例如当前文件夹下有两个mp3文件

使用脚本将其转换为wav格式

注意 :因为conver.sh包含 ​​Windows 换行符(\r\n)​ ​,而 Linux/macOS 系统使用的是 ​​Unix 换行符(\n),可以手动将其删除

bash 复制代码
sed -i 's/\r$//' conver.sh
chmod +x conver.sh
./conver.sh

执行结果如下:

则mp3就转换为wav完毕了

可以将其优化下,例如mp3文件多了后,将转换成功的wav文件保存到相应的文件夹中

bash 复制代码
 #!/bin/bash

output_dir="./wav_files"
mkdir -p "$output_dir"

# 获取 MP3 文件列表
mp3_files=(*.mp3)
total_files=${#mp3_files[@]}

if [ "$total_files" -eq 0 ]; then
    echo "错误:当前目录没有 MP3 文件!"
    exit 1
fi

# 开始转换
for ((i=0; i<total_files; i++)); do
    file="${mp3_files[$i]}"
    progress=$(( (i + 1) * 100 / total_files ))
    echo -ne "进度: $progress% | 正在转换: $file\r"
    ffmpeg -i "$file" -acodec pcm_s16le "$output_dir/${file%.mp3}.wav" -hide_banner -loglevel error
done

echo -e "\n转换完成!所有文件已保存到 $output_dir/"

例如,当前文件夹中不仅有mp3文件,还有wav格式的文件,为了方便后续统一处理,自动将已有的 WAV 文件复制到目标目录​​

bash 复制代码
#!/bin/bash

output_dir="./wav_files"
mkdir -p "$output_dir"

# 功能1:转换所有MP3为WAV
mp3_files=(*.mp3)
total_mp3=${#mp3_files[@]}

if [ "$total_mp3" -gt 0 ]; then
    echo "正在转换MP3文件..."
    for ((i=0; i<total_mp3; i++)); do
        file="${mp3_files[$i]}"
        progress=$(( (i + 1) * 100 / total_mp3 ))
        echo -ne "进度: $progress% | 正在转换: $file\r"
        ffmpeg -i "$file" -acodec pcm_s16le "$output_dir/${file%.mp3}.wav" -hide_banner -loglevel error
    done
    echo -e "\n已转换 $total_mp3 个MP3文件"
else
    echo "未找到MP3文件,跳过转换"
fi

# 功能2:复制已存在的WAV文件
wav_files=(*.wav)
total_wav=${#wav_files[@]}

if [ "$total_wav" -gt 0 ]; then
    echo "正在复制WAV文件..."
    for file in "${wav_files[@]}"; do
        # 检查目标文件是否已存在(避免重复复制)
        if [ ! -f "$output_dir/$file" ]; then
            cp -v "$file" "$output_dir/"
        fi
    done
    echo "已复制 $total_wav 个WAV文件"
else
    echo "未找到WAV文件,跳过复制"
fi

echo -e "\n操作完成!所有音频文件已保存在 $output_dir/"

例如当前目录下有以下几个文件

则进行脚本运行转换:

则将wav文件和mp3文件均放置到wav_files文件夹中

相关推荐
ofoxcoding14 小时前
Gemini TTS 与 ElevenLabs 语音合成实测:同一段视频旁白效果对比
ai·ffmpeg·音视频
_大峰_1 天前
索尼 A7M4 误删视频恢复实战:基于原始卡镜像重建 MP4 数据
ffmpeg·数据恢复·音视频·mp4·exfat
Anhty1 天前
3 款手机音频剪辑 APP 横评,短视频配音后期,免费工具怎么选?
功能测试·ffmpeg·音视频
VidDown3 天前
自动给视频挑一张能看的封面:帧评分、构图与批量生成
python·ffmpeg·音视频·视频
可乐鸡翅yeah_3 天前
HLS 业务 Referer‑Policy 网页元标签引发播放异常排错
前端·javascript·网络·ffmpeg·php·音视频
开开心心就好4 天前
本地文件搜索工具推荐,占用小速度还快
智能手机·ffmpeg·ocr·word·音视频·网络攻击模型·安全架构
我科绝伦(Huanhuan Zhou)4 天前
oracle坏块导致备份不了
数据库·oracle·ffmpeg
RS迷途小书童5 天前
Python+FFmpeg提取大疆无人机MP4内嵌mov_text遥测SRT字幕并做完整性校验
python·ffmpeg·大疆·srt字幕·dji
开开心心就好5 天前
视频压缩工具推荐,画质效果很能打
智能手机·ffmpeg·ocr·word·排序算法·音视频·散列表
可乐鸡翅yeah_5 天前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线