将WMA批量转换为mp3,而无需更改目录


8

从我以前使用Windows Media Player翻录CD以来,我就有数千种WMA格式的音乐曲目。现在我在工作时无法在Linux桌面上播放它们。

是否有一个很好的解决方案(对于Windows或Linux),可以将所有WMA转换为MP3,同时将它们保留在与以前相同的目录中?我尝试使用iTunes来执行此操作,但是它开始创建新目录来存储所有不需要的转换后的曲目。


1
在Linux中(顺便说一下,是什么发行版?)find -execdir,ffmpeg应该做一些组合,但是在发布答案之前,我将进行一些测试。
— 威廉·杰克逊

2
请注意,每次在有损格式之间进行转换时,都会失去质量。这种质量损失是否可以听见取决于原始质量,用于转码的编码器,播放设备和耳朵。如果是我,我会考虑重新翻录CD(如果可能),而不是转码。即使我知道这需要花费更多时间。你也可以考虑存储在无损格式的光盘翻录(FLAC是我的最爱,但也有其他人),和转码即以MP3为您的便携式MP3播放器,等等。这当然需要更多的磁盘空间。
— Flimzy 2011年

@William:在工作中,我使用openSUSE,在家里,我使用linux mint(ubuntu)和Windows7。我必须在有空的时候检查ffmpeg,看看是否可以编写bash脚本或其他东西。如果您发布了有效的答案,那么我会在此注明
— Eddy

@Flimzy:我将尝试转换一些曲目,并通过耳朵检查我是否注意到质量下降。我不是发烧友,所以我怀疑这对我来说可能没问题,但比我想的抱歉要安全得多
— Eddy

我为此使用DB PowerAmp Music Converter,它是一款很棒的软件,但不是免费的(需要MP3许可证)... dbpoweramp.com/dmc.htm
— Moab

Answers:


6

如果您有成千上万个文件,那么这将永远花费。

find . -iname "*.wma" -execdir ffmpeg -i {} -ab 192k -map_metadata 0:s:0 {}.mp3 \;

(较早版本的ffmpeg可能需要-map_meta_data代替-map_metadata,0:0而不是0:s:0。)

我在Ubuntu 16.04上进行了测试。如果尚未安装,则需要安装软件包ffmpeg和libavcodec-extra-52。

从包含所有WMA文件的父目录中启动此命令。它将在所有子目录中搜索具有.wma扩展名的任何文件,然后尝试将其转换为MP3。如果源文件名为Awesome Song.wma,则新文件将Awesome Song.wma.mp3与源文件位于同一目录中。

如果您通常使用高于或低于192k的比特率,请将-ab 192k标志更改为所需的任何值。


1

这个添加的标志将告诉ffmpeg尝试保留ID3标签:

find . -iname "*.wma" -execdir ffmpeg -i {} -ab 192k **-map_metadata 0:0** {}.mp3 \;

1

这将找到WMA文件,将其转换为扩展名为.mp3而不是的MP3 ,.wma.mp3并删除旧文件。经过测试,该功能可在Fedora 19上正常运行,同时通过排列的150 GB有价值的文件搜索WMA文件artist/album/<disk number>/file。

find . -iname "*.wma" -execdir bash -c 'NAME="{}" && ffmpeg -y -i "$NAME" -ab 192k "${NAME/.wma/.mp3}" && rm "$NAME"' \;

在Mac上可以使用,似乎也保留了一些元数据。虽然我收到很多Queue input is backward in time [mp3 @ 0x7fbffb02ba00] Application provided invalid, non monotonically increasing dts to muxer in stream警告。
— adib 2015年


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.