接尾辞が付いたオーディオファイルは多数あり、これらはAACまたはApple Lossless(ALAC)のいずれか.m4a
でエンコードされています。AppleLosslessでエンコードされたオーディオファイルのみを選択したい。これを判断する方法はありますか?FFmpegを試しましたが、すべてAACでエンコードされているとのことです。
編集:私は現在Windowsを使用しています。
FFmpegパッケージをお持ちの場合は、 ffprobe
.
これを試してください:
ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 file.m4a
-v error
: 起動テキストを非表示にします-select_streams a:0
: 最初のオーディオトラックを選択します-show_entries stream=codec_name
: コーデック タイプのみを表示する-of default=noprint_wrappers=1:nokey=1
: 余分なフォーマットを削除しますこれはaac
、またはのみを出力しalac
ます。スクリプト作成に最適です。
67 ページに M4A の説明が記載されているファイル (これまでに見つけた中で最高のもの) は次のとおり です。 pdf
A typical M4A begins with an 'ftyp' atom indicating its file type... 10.2.1 the ftyp atom [0 31] ftyp Length [32 63] 'ftyp' (0x66747970) [64 95] Major Brand [96 127] Major Brand Version [128 159] Compatible Brand₁ ... The 'Major Brand' and 'Compatible Brand' elds are ASCII strings. 'Major Brand Version' is an integer.
最初は、「ftyp」がフォーマットが決定される場所になると考えましたが、このリストから判断すると、ファイルタイプ自体 (すでに m4a として知られています) に似ています: http://www.ftyps.com/index.html
http://www.ftyps.com/what.html形式についてもう少し説明します。
ftyp が区別されない場合、「主要ブランド」フィールドはこのページの fourcc を参照していると思います: http://wiki.multimedia.cx/index.php?title=QuickTime_container Apple Lossless のものは ' alac' で、AAC はおそらく 'mp4a' です。
Apple の Lossless 形式のオープン ソース ページは、ftype が「alac」であることを示しています (上記とは少し矛盾しています) http://alac.macosforge.org/trac/browser/trunk/ALACMagicCookieDescription.txt
これまでのところ、ftyp に続く 4 バイトは常に (小さいサンプル サイズで) 'M4A' であることがわかります。
最初の 200 (16 進) バイト程度のどこかに、AAC 圧縮用の ascii 'mp4a' または Apple Lossless 用の 'alac' があります。「alac」は常に 30 バイト間隔でペアになっているようです (「mp4a」は 1 回のみ)。
正確な場所または接頭辞が見つかったら、もう一度更新します。(私の推測では、ヘッダーの前半部分のサイズがどこかに指定されています。)
Core Audioでそれを行うことができます。
何かのようなもの:
CFStringRef pathToFile;
CFURLRef inputFileURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, pathToFile, kCFURLPOSIXPathStyle, false);
ExtAudioFileRef inputFile;
ExtAudioFileOpenURL(inputFileURL, &inputFile);
AudioStreamBasicDescription fileDescription;
UInt32 propertySize = sizeof(fileDescription);
ExtAudioFileGetProperty(inputFile,
kExtAudioFileProperty_FileDataFormat,
&propertySize,
&fileDescription);
if(fileDescription.mFormatID == kAudioFormatAppleLossless){
// file is apple lossless
}
Mac では、目的のファイルを選択して右クリックします。「情報を見る」を見つけてクリックすると、選択したファイルに関する追加情報がウィンドウにポップアップ表示されます。「Codecs:」「AAC」または「Apple Lossless」の横に表示されている必要があります。同じ質問をした Mac ユーザー (および、OS に精通していなくても、何らかの方法で Windows ユーザーがいる可能性があります) の助けになれば幸いです。
http://sourceforge.net/projects/mediainfo/を使用してみてください
「MediaInfo は、ビデオとオーディオ ファイルの最も関連性の高い技術データとタグ データの便利な統合表示です。」- sourceforge プロジェクトの説明
このように情報が表示されます。
General
Complete name : C:\Downloads\recit24bit.m4a
Format : MPEG-4
Format profile : Apple audio with iTunes info
Codec ID : M4A
File size : 2.62 MiB
Duration : 9s 9ms
Overall bit rate : 2 441 Kbps
Track name : 24 bit recital ALAC Test File
Performer : N\A
Comment : Test File
Audio
ID : 1
Format : ALAC
Codec ID : alac
Codec ID/Info : Apple Lossless Format
Duration : 9s 9ms
Bit rate mode : Variable
Bit rate : 2 438 Kbps
Channel(s) : 2 channels
Sampling rate : 22.7 KHz
Bit depth : 24 bits
Stream size : 2.62 MiB (100%)
Language : English
コーデック/エンコーディングの詳細については、オーディオ セクションを確認してください。