zoukankan      html  css  js  c++  java
  • Ubuntu下用cue文件对ape和wav文件自动分轨

    很多音乐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下测试通过。 

  • 相关阅读:
    MFC关闭子窗口 如何把父窗口也一起关闭
    VS2010创建动态链接库并且使用动态链接库DLL
    Linux文件处理命令
    Centos ftp服务器安装配置
    PHP数字价格格式化,保留两位小数
    PHP中file_put_contents追加和换行
    如何查看Laravel版本号的三种方法
    性能优化系列一:性能优化介绍与优化的范围
    只需两步获取任何微信小程序源码
    前端网页、php与mysql数据库字符编码(解决中文等乱码问题
  • 原文地址:https://www.cnblogs.com/pandachen/p/4557573.html
Copyright © 2011-2022 走看看