fdk_aac

fdk_aac

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メソッドを好むので、もう使用されていません。どんな助けでも大変感謝します!真のVBRでなければ、320Kbpsも受け入れることができますが、少なくとも320LC VBRが最善です。

答え1

まず-aq、品質に応じて可変ビットレートを設定します。あなたが探しているようです-ab(私はffmpegユーザーなので、avconv構文の知識が限られています。フォーク以降はわかりません)。

とにかく組み込まれたavconv / ffmpeg AACエンコーダはかなり悪いです。

fdk_aac

avconv/ffmpeg本当に良いAACエンコーダはlibfdk_aacです。ただし、ライセンスはGPLと互換性がないため、アクセスするには次の手順を実行する必要があります。独自のコンパイル(私はavconvのガイドについて知らないので、これはffmpegコンパイルガイドです。

獲得してからフォローしてください。AACコーディングガイドライン;fdk_aacを試してみることをお勧めします。-vbrオプション - 3に設定すると、試したすべてのファイルで透過的に聞こえました。より高いビットレートのプラシーボが必要な場合、またはサウンドエンジニアの場合は5に設定してみてください。

ffmpeg -i input.flac -c:a libfdk_aac -vbr 3 output.m4a

いいえ-map_metadata、ffmpegはメタデータを自動的に送信します(avconvも同様であると確信しています)。

320kbit / sの固定ビットレートの場合(実際にはそれほど価値はありません。AACは、固定128kbit / s程度でオリジナルのCDオーディオに匹敵するオーディオ透明性を達成します):

ffmpeg -i input.flac -c:a libfdk_aac -b:a 320k

neroAacEnc

NeroのAACエンコーダは、fdk_aacおよびqaac(Quicktime AAC)と同じと見なす必要があります。人々はどちらがより良いかについて異なる意見を提示しますが、非常に低いビットレートでのみ違いを感じることができ、すべてがすべて非常に高品質であることに同意します。

neroAacEnc利用可能Neroのウェブサイトから。解凍して$PATHのどこかに入れてください。

残念ながら、neroAacEncWAVオーディオのみを入力として使用できます。 avconvまたはffmpegをデコーダとして使用してこの問題を解決できます。

avconv -i input.flac -f wav - | neroAacEnc -if - -ignorelength -q 0.4 output.m4a

残念ながら、これはメタデータを削除します。転送するには、avprobe / ffprobe(使用-show_format)を使用して抽出し、neroAacTagを使用して挿入します。 bashスクリプトが適している可能性があります。

HydrogenAudioを見るneroAacEncのページ:記憶上では-q0.4設定が私にはいいようです。使えます-br(もう一度言いますが、これは方法通過):

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

答え2

FLACをAACに変換するには、FFmpegを使用することをお勧めします。 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

答え3

これは、サポートされているオーディオ形式を変換するために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

答え4

補足回答(evisoupへの回答)

扱う

  • サブディレクトリ内のすべてのファイル
  • ファイル名の空白( find's -print0+ xarg's -0)
  • 新しく作成したm4aファイルをソースflacファイルと同じディレクトリに保存します($1sh -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

関連情報