具有基于标签的文件名的无头音乐转换器

具有基于标签的文件名的无头音乐转换器

我有一个由 Apple Lossless 中的几部电影配乐组成的音乐收藏,我想将其转换为 48kbps OGG Vorbis,采用完全不同的文件夹结构,文件名格式如下:

/music folder/{album artist}/{album name}/{track number} {track title} - {track artist}.ogg

我还想将专辑封面提取到同一文件夹中名为“AlbumArt.jpg”的单独文件中。

问题是我想在我的无头 Ubuntu 服务器上执行此操作 - 所以仅限终端。

有没有什么方法可以做到这一点而不需要大量的脚本编写?

答案1

这是一个示例脚本及其使用方法。

首先安装这些软件包:libav-tools mediainfo ubuntu-restricted-extras

  • avconv(原名ffmpeg)执行实际的转换
  • mediainfo提供标签信息来创建文件夹结构和命名文件。

脚本如下:

/bin/bash #!/bin/bash
OUTPUTBASE=converted-oggs #输出基本文件夹的路径 ALBUMARTIST=`mediainfo --Inform="General;%Album/Performer%" "$1"` ALBUM=`mediainfo --Inform="General;%Album%" "$1"` TNUMBER=`mediainfo --Inform="General;%Track/Position%" "$1"` TTITLE=`mediainfo --Inform="General;%Track%" "$1"` TARTIST=`mediainfo --Inform="General;%Performer%" "$1"` mkdir -p "$OUTPUTBASE/$ALBUMARTIST/$ALBUM" mediainfo --Inform="General;%Cover_Data%" "$1" | base64 -d > "$OUTPUTBASE/$ALBUMARTIST/$ALBUM/AlbumArt.jpg" avconv -i "$1" -acodec libvorbis -b 48k "$OUTPUTBASE/$ALBUMARTIST/$ALBUM/$TNUMBER $TTITLE - $TARTIST.ogg"

假设我们将脚本命名为~/silexcvt.sh,然后您要转换文件夹m4a中的所有曲目~/soundtracks,您需要findxargs调用该脚本:

查找配乐 -regex '.*m4a$' | xargs -I '{}' ./silexcvt.sh "{}"

相关内容