从我以前使用Windows Media Player翻录CD以来,我就有数千种WMA格式的音乐曲目。现在我在工作时无法在Linux桌面上播放它们。
是否有一个很好的解决方案(对于Windows或Linux),可以将所有WMA转换为MP3,同时将它们保留在与以前相同的目录中?我尝试使用iTunes来执行此操作,但是它开始创建新目录来存储所有不需要的转换后的曲目。
从我以前使用Windows Media Player翻录CD以来,我就有数千种WMA格式的音乐曲目。现在我在工作时无法在Linux桌面上播放它们。
是否有一个很好的解决方案(对于Windows或Linux),可以将所有WMA转换为MP3,同时将它们保留在与以前相同的目录中?我尝试使用iTunes来执行此操作,但是它开始创建新目录来存储所有不需要的转换后的曲目。
Answers:
如果您有成千上万个文件,那么这将永远花费。
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
标志更改为所需的任何值。
这将找到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"' \;
Queue input is backward in time [mp3 @ 0x7fbffb02ba00] Application provided invalid, non monotonically increasing dts to muxer in stream
警告。
find -execdir
,ffmpeg
应该做一些组合,但是在发布答案之前,我将进行一些测试。