CDをFLACにバックアップしてから、移植性を確保するためにAndroid電話と妻のiPhone)でAAC(.m4a)ファイルにトランスコードします。MacでXLDを使用していて、素晴らしい仕事をしていますしかし、私は彼女のMacを盗んでこれを実行し、自分のDebianボックスで実行できるようにしたくありません。
avconv -i "inputfile.flac" -acodec aac -strict experimental "outputfile.m4a" -map_metadata "inputfile.flac":"outputfile.m4a"
しかし、以下はそうではありません(そうですが、オーディオ品質と結果は上記と同じですが320は無視されます)。
avconv -i "inputfile.flac" -acodec aac -aq 320 -strict experimental "outputfile.m4a" -map_metadata "inputfile.flac":"outputfile.m4a"
「ffmpeg」などの他のコマンドをオンラインで見つけましたが、明らかにそれらのほとんどまたはすべてが上記のavconvメソッドを支持して減価償却されています。どんな助けでも大歓迎です!私は320 Kbps真のVBRでない場合は生きることができますが、LC少なくとも320のVBRが最適です。
まず、-aq
は品質ベースの可変ビットレートを設定します--ab
を探していると思います(私はffmpegユーザーなので、avconv構文の知識は限られています-私はフォークからどれだけドリフトしているかわからない)。
とにかく、組み込みのavconv/ffmpeg AACエンコーダーはかなり悪いです。
Avconv/ffmpegの本当に優れたAACエンコーダーはlibfdk_aacのみですが、そのライセンスはGPLと互換性がないため、それにアクセスするには 独自にコンパイル する必要があります(これはffmpegコンパイルガイド、私はavconvのガイドがわからないため、Ubuntu固有のものがそこにあるとは思わないので、UbuntuガイドはDebianに適しています。
入手したら、 AACエンコーディングガイド に従ってください。 fdk_aacの -vbr
オプションを試してみることを強くお勧めします。より高いビットレートのプラセボが必要な場合、またはサウンドエンジニアは5の設定を試すことができます。
ffmpeg -i input.flac -c:a libfdk_aac -vbr 3 output.m4a
Ffmpegが自動的にメタデータを転送するので、-map_metadata
は必要ありません(そして、avconvも確実に転送されます)。
固定ビットレート320 kbit/sの場合(真剣に、これは価値がありません。AACは、約128 kbit/sで元のCDオーディオに対してオーディオの透過性を実現します):
ffmpeg -i input.flac -c:a libfdk_aac -b:a 320k
NeroのAACエンコーダは、fdk_aacおよびqaac(Quicktime AAC)と同等であると見なされます。人によって意見の違いは異なりますが、ビットレートが非常に低い場合にのみ違いに気付くでしょう。そして、すべてが非常に高品質であることに誰もが同意します。
neroAacEnc
が利用可能です NeroのWebサイトから 。それを解凍し、$ PATHのどこかに配置します。
残念ながらneroAacEnc
はWAVオーディオのみを入力として受け取ることができます。これを回避するには、デコーダーとしてavconvまたはffmpegを使用します。
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -q 0.4 output.m4a
残念ながら、これによりメタデータが削除されます。それを転送するには、avprobe/ffprobe(-show_format
付き)を使用して抽出し、neroAacTagを使用して挿入します。おそらくbashスクリプトが適切でしょう。
HydrogenAudioを参照してください neroAacEncのページ :メモリから、0.4の-q
設定は私にとって素晴らしい音でした。 -br
を使用してビットレートをターゲットにできます(これもwayoverkillだと思います)。
avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -br 320000 output.m4a
編集:これは、neroAacEncでオーディオファイルをm4aに変換し、ffprobeとneroAacTagでタグ付けするためのスクリプトです(すべてのファイルが$ PATHのディレクトリにある必要があります)。複数の入力ファイルを取得できるため、convert-to-m4a
として保存すると、ディレクトリ内のすべてのFLACファイルを
convert-to-m4a *.flac
FLACファイルだけに限定されません。 ffmpeg/avconvがデコードできるすべてのオーディオ形式が機能します。 ffprobeとffmpegをavprobeとavconvに変更することができます:
#!/usr/bin/env bash
until [[ "$1" = '' ]]; do
ffmpeg -i "$1" -f wav - | neroAacEnc -if - -ignorelength -q 0.4 "${1%.*}.m4a"
tags=()
while read -r; do
tags+=("$REPLY")
done < <(ffprobe -i "$1" -show_format 2>/dev/null | sed -ne 's/date/year/' -e '/TAG:/s/TAG/-meta/p')
neroAacTag "${1%.*}.m4a" "${tags[@]}"
shift
done
exit 0
FFmpegを使用してFLACからAACに変換することをお勧めします。 FFmpegは、brewを使用してMac OS Xマシンに簡単にインストールできます。
brew install ffmpeg
次に、次のコマンドを実行して、現在のディレクトリにあるすべてのFLACファイルをAACに変換します。
for i in *flac;do of="${i/.flac/.m4a}"; ffmpeg -i "${i}" -vn -acodec libvo_aacenc -b:a 320k -f mp4 -y "${of}";done
そしてそれらをMP3に変換するには:
for i in *flac;do of="${i/.flac/.mp3}"; ffmpeg -i "${i}" -vn -acodec mp3 -b:a 320k -f mp3 -y "${of}";done
これは、サポートされているオーディオ形式を[〜#〜] aac [〜#〜]に変換するためのffmpegをラップする私のスクリプトです(ffmpeg wikiで推奨されるaacエンコーダーであるlibfdk-aacエンコーダーを使用)。
#!/usr/bin/env python2.7
from optparse import OptionParser
from subprocess import call
from os.path import splitext
import sys, os
def ffaac(filename, opts):
cmd = ['ffmpeg', '-hide_banner', '-y', '-i', filename,
'-vn', '-c:a', 'libfdk_aac']
profile = {'lc':'aac_low', 'he':'aac_he', 'he2':'aac_he_v2',
'ld':'aac_ld', 'eld':'aac_eld'}
if not opts.br and not opts.vbr:
cmd.extend(['-b:a', '320k'])
if opts.br:
cmd.extend(['-b:a', str(opts.br)+'k'])
if opts.vbr:
cmd.extend(['-vbr', opts.vbr])
if opts.ar:
cmd.extend(['-ar', opts.ar])
if opts.ch:
cmd.extend(['-ac', opts.ch])
cmd.extend(['-profile:a', profile[opts.prof]])
if opts.prof == 'eld' and opts.sbr:
cmd.extend(['-eld_sbr', '1'])
cmd.extend(['-f', 'adts'])
if filename.lower().endswith('.aac'):
return
outfile = splitext(filename)[0] + '.aac'
cmd.append(outfile)
return call(cmd)
if __name__=='__main__':
parser = OptionParser(sys.argv[0]+' [OPTIONS] FILE ...')
parser.add_option('-b', metavar='NUM', type=int, dest='br', help='bitrate')
parser.add_option('-r', metavar='NUM', choices=['8000','11025','16000','22050','32000', '44100', '48000'], dest='ar', help='sample rate: 8000/11025/22050/32000/44100/48000')
parser.add_option('-c', metavar='NUM', choices=['1','2'],dest='ch', help='channels: 1/2')
parser.add_option('-p', metavar='TYPE',choices=['lc', 'he', 'he2', 'ld', 'eld'], default='lc', dest='prof', help='profile: lc/he/he2/ld/eld')
parser.add_option('-v', metavar='QUAL', choices=['1', '2', '3', '4', '5'], dest='vbr', help='vbr quality: 1/2/3/4/5')
parser.add_option('-s', action='store_true', dest='sbr', help='use SBR for ELD')
parser.add_option('-d', action='store_true', dest='delete',help='delete source after converting')
opts, args = parser.parse_args()
for f in args:
if ffaac(f, opts) == 0 and opts.delete :
try:
os.remove(f)
except OSError:
pass
コマンドラインヘルプメッセージ:
Usage: /Users/leon/bin/ffaac.py [OPTIONS] FILE ...
Options:
-h, --help show this help message and exit
-b NUM bitrate
-r NUM sample rate: 8000/11025/22050/32000/44100/48000
-c NUM channels: 1/2
-p TYPE profile: lc/he/he2/ld/eld
-v QUAL vbr quality: 1/2/3/4/5
-s use SBR for ELD
-d delete source after converting
処理する
find
's -print0
+ xarg
の-0
)$1
からsh -c
の位置引数--FILE
xarg
の設定-I
)find . -name '*.flac' -print0 | xargs -0 -I FILE sh -c 'ffmpeg -i "$1" -c:a libfdk_aac -vbr 3 "${1%.flac}.m4a"' -- FILE