有许多带有.m4a
后缀的音频文件,这些文件以AAC或Apple Lossless (ALAC) 之一编码。我只想选择用 Apple Lossless 编码的音频文件。有没有办法确定这一点?我试过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
or alac
。非常适合编写脚本。
这是第 67 页上的 M4A 描述文件(到目前为止我能找到的最好的):http: //iweb.dl.sourceforge.net/project/audiotools/audio%20formats%20reference/2.14/audioformats_2.14_letter。 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'
苹果的 Lossless 格式开源页面显示 ftype 为 'alac' (与上面略有矛盾) http://alac.macosforge.org/trac/browser/trunk/ALACMagicCookieDescription.txt
到目前为止,我能说的是,ftyp 后面的 4 个字节总是(在较小的样本大小中)'M4A'。
在前约 200 个(十六进制)字节左右的某个地方,有一个用于 AAC 压缩的 ascii 'mp4a' 或一个用于 Apple Lossless 的 'alac'。'alac' 似乎总是成对出现,相隔约 30 个字节('mp4a' 只有一次)。
抱歉,这不是更具体,如果我找到确切的位置或前缀,我会再次更新。(我的猜测是标题的早期部分在某处指定了大小。)
您可以使用 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 上,您选择所需的文件,然后右键单击。找到“获取信息”并单击它,将弹出一个窗口,其中包含有关您选择的文件的额外信息。它应该在“编解码器”旁边说:“AAC”或“Apple Lossless”我希望我能帮助那些有同样问题的 Mac 用户(即使我不熟悉操作系统,也可能以某种方式帮助 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
检查音频部分以获取编解码器/编码详细信息。