Audio 确定音频文件是否采用Apple无损(ALAC)编码
有许多音频文件的后缀为Audio 确定音频文件是否采用Apple无损(ALAC)编码,audio,encoding,aac,m4a,Audio,Encoding,Aac,M4a,有许多音频文件的后缀为.m4a,这些文件以或(ALAC)之一进行编码。我只想选择苹果无损编码的音频文件。有没有办法确定这一点?我试过了,但是上面说所有的都是用AAC编码的 编辑:我目前在Windows上。您可以使用核心音频进行编辑 比如: CFStringRef pathToFile; CFURLRef inputFileURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, pathToFile, kCFURLPOSIXPathStyl
.m4a
,这些文件以或(ALAC)之一进行编码。我只想选择苹果无损编码的音频文件。有没有办法确定这一点?我试过了,但是上面说所有的都是用AAC编码的
编辑:我目前在Windows上。您可以使用核心音频进行编辑 比如:
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
}
下面是一个文件,该文件在第67页有M4A的描述(目前为止我能找到的最好的描述): 起初,我认为“ftyp”是决定格式的地方,但从这个列表来看,它更像文件类型本身(已经被称为m4a): 描述了更多的格式 如果ftyp没有区分,那么我认为“主要品牌”字段可能指的是本页上的fourcc: 苹果无损的一个是“alac”,而AAC可能是“mp4a” 苹果的无损格式开源页面表明ftype是“alac”(与上面的内容稍有矛盾) 到目前为止,我能说的是,ftyp后面的4个字节总是(在一个小样本大小中)“M4A” 大约在前200(十六进制)字节的某个地方,有一个ascii“mp4a”用于AAC压缩,或者有一个“alac”用于Apple无损压缩。“alac”似乎总是成对出现,相隔约30字节(“mp4a”仅出现一次)
对不起,这不是更具体的,如果我找到确切的位置或前缀,我会再次更新。(我猜头的前面部分在某个地方指定了大小。)在Mac电脑上,选择所需的文件,然后右键单击。找到“获取信息”并单击它,一个窗口将弹出,其中包含有关所选文件的额外信息。它应该在“编解码器”旁边写:“AAC”或“苹果无损” 我希望我能帮助那些有同样问题的Mac用户(可能还有Windows用户,尽管我不熟悉操作系统。)尝试使用 “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
查看音频部分了解编解码器/编码详细信息。如果您有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
:以选择第一个音频曲目-选择\u streams a:0
:仅显示编解码器类型-show_entries stream=codec_name
:删除额外格式-of default=noprint\u wrappers=1:nokey=1
这将仅打印出
aac
或alac
。非常适合编写脚本。这是一种特定的语言,还是在寻找基于CLI的linux工具?您是否尝试过不同的FFMPEG构建?我很惊讶它不能识别正确的编解码器。@Lee我目前正在使用Python,但是如果有任何可编程的方法,我都可以。我可以打开CLI实用程序,使用ctypes调用C函数,或者用另一种语言编写。@aglassman如上所述,我不在乎必须使用哪种语言。您当前使用的是哪种版本的ffmpeg。ALAC是在v0.5中引入的(与2008年类似??)。我想你的版本很好,但只是涵盖了所有的基础…完美。谢谢
ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 file.m4a