歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu下用cue文件對ape和wav文件自動分軌

Ubuntu下用cue文件對ape和wav文件自動分軌

日期:2017/2/28 14:00:49   编辑:Linux教程

很多音樂CD的鏡像文件都帶cue格式的分軌文件,在Ubuntu Linux下可以通過一些工具來實現自動分軌。

一、Ubuntu下需要安裝的工具有flac,shntool

$ sudo apt-get install flac shntool

要對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下測試通過。

更多Ubuntu相關信息見Ubuntu 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=2

Copyright © Linux教程網 All Rights Reserved