博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ubuntu下用cue文件对ape和wav文件自动分轨
阅读量:5274 次
发布时间:2019-06-14

本文共 2264 字,大约阅读时间需要 7 分钟。

很多音乐CD的镜像文件都带cue格式的分轨文件,在Ubuntu Linux下可以通过一些工具来实现自动分轨。

一、Ubuntu下需要安装的工具有flac,shntool,libav-tools

$ sudo apt-get install flac shntool libav-tools

要对ape直接分轨的话需要linux版的mac编解码器,编译安装;或者,先将ape文件转换为wav或falc格式。

二、对cue索引的flac分轨:

$ shntool split -t "%n.%p-%t" -f example.cue -o flac music.flac -d outputdir

-d 指定分轨后的falc文件的输出目录,不指定的话在当前目录生成

-t 指定输出文件的文件名格式,%n是音轨号,%p是演奏者/艺术家, %t标题

对ape分轨也类似

$ shntool split -t "%n.%p-%t" -f example.cue -o ape example.ape -d outputdir

目前发现ape分轨成多个ape似乎会出现错误无法处理,但是将ape分轨然后转码成其他格式(flac,mp3…)是没有问题的,flac和其他格式之间没有问题。

cue文件的字符集最好与系统当前使用的字符集相同,否则最好用iconv 转码后进行,否则最后生成的文件名可能乱码。

$ iconv -f gb18030 -t utf8 CDImage.cue -o CDImage-linux.cue
$ dos2unix CDImage-linux.cue

三、将ape转换为wav或flac格式

$ avconv -i CDImage.ape CDImage.flac //ape----->flac, 以前用ffmpeg,现在用avconv

$ avconv -i CDImage.wav CDImage.flac //wav----->flac
$ avconv -i CDImage.ape CDImage.wav //ape---->wav 

四、其它格式转换

$ flac CDImage.wav CDImage.flac //wav---->flac

$ shnconv -i ape -o flac CDImage.ape //ape----->flac
$ shnconv -i flac -o ape CDImage.flac //flac----->ape

 

五、附脚本 audio-cue-split.sh

#/bin/bash

if [ $# -ne 2 ]

then

echo -e "Usage: audio-cue-split.sh [AUDIO_FILE_NAME] [DECODE_MODULE]"
echo "example: audio-cue-split.sh CDImage.wav wav"
echo "Note: The cue file must has the same name with the audio file."
echo -e "Note: DECODE_MODULE: wav, flac, etc"
exit

fi

 

AUDIO_FILE=$1

DECODE_MODULE=$2
FILE_PREFIX=`echo $AUDIO_FILE | sed "s/.$DECODE_MODULE$//"`

if [ "$DECODE_MODULE" = "ape" ]

then

echo -e "First, convert ape format to flac format, waite a minute..."
FLAC_FILE=$FILE_PREFIX.flac
#ffmpeg -i "$AUDIO_FILE" "$FLAC_FILE"
avconv -i "$AUDIO_FILE" "$FLAC_FILE"
AUDIO_FILE=$FLAC_FILE
DECODE_MODULE='flac'
CONVERT="true"

fi

 

CUE_FILE=$FILE_PREFIX.cue

CUE_FILE_LINUX=$FILE_PREFIX-linux.cue
#echo AUDIO_FILE=$AUDIO_FILE
#echo DECODE_MODULE=$DECODE_MODULE
#echo FILE_PREFIX=$FILE_PREFIX
#echo CUE_FILE=$CUE_FILE

iconv -f gb18030 -t utf8 "$CUE_FILE" -o "$CUE_FILE_LINUX"

dos2unix "$CUE_FILE_LINUX"
shntool split -t "%n-%t" -f "$CUE_FILE_LINUX" -o $DECODE_MODULE "$AUDIO_FILE"

if [ "$CONVERT" = "true" -a "$FLAC_FILE" != "" ]

then

echo -e "Remove temporary flac file: $FLAC_FILE"
rm -f "$FLAC_FILE"

fi

 

注:以上脚本在Ubuntu Kylin 14.04下测试通过。 

转载于:https://www.cnblogs.com/pandachen/p/4557573.html

你可能感兴趣的文章
最大化平均值 (二分搜索法)
查看>>
讲一下python的背景知识
查看>>
jdbc 驱动设置
查看>>
windows 编程 —— 消息与参数(定时器、初始化消息、改变大小)
查看>>
ES6基础知识清单
查看>>
Java线程池ThreadPoolExecutor使用和分析
查看>>
Power of Two
查看>>
批量隐藏注释
查看>>
过滤选择器——可见性过滤选择器
查看>>
testing
查看>>
Oracle 树操作(select…start with…connect by…prior)
查看>>
学习PHP注意事项
查看>>
vue路由实例
查看>>
PHP之冒泡排序
查看>>
23 服务IntentService Demo6
查看>>
jquery 元素居中间
查看>>
如何判断PeopleEditor的值为空
查看>>
ie8.0 不能用document.all兼容IE7模式
查看>>
gRPC
查看>>
SharePoint 2010 工作流解决方案:将 SharePoint Designer 可重用工作流导入 Visual Studio...
查看>>