CoreAudio:读取 AudioFileMarkerList 的正确方法?
CoreAudio: the proper method of reading an AudioFileMarkerList?
快速概览: 我正在开发 Mac Swift 桌面音频应用程序。我 运行 遇到的情况似乎需要我点击 AudioToolbox C api 才能获得 AudioFileMarkerList。在任何较新的 AVStuff 中似乎都不支持此功能,因此您似乎仍然需要使用 AudioToolbox API。
我很想听听有人在处理这些 C 结构方面有经验,甚至更好,将它们与 Swift 联系起来。或者,如果有另一种方法可以从我丢失的声音文件中检索标记 - 我也很想知道。
这是答案,以防以后有人遇到这个问题。
// get size of markers property (dictionary)
UInt32 propSize;
UInt32 writable;
[EZAudioUtilities checkResult:AudioFileGetPropertyInfo( self.audioFileID,
kAudioFilePropertyMarkerList,
&propSize,
&writable)
operation:"Failed to get the size of the marker list"];
size_t length = NumBytesToNumAudioFileMarkers( propSize );
// allocate enough space for the markers.
AudioFileMarkerList markers[ length ];
if ( length > 0 ) {
// pull marker list
[EZAudioUtilities checkResult:AudioFileGetProperty( self.audioFileID,
kAudioFilePropertyMarkerList,
&propSize,
&markers)
operation:"Failed to get the markers list"];
} else {
return NULL;
}
//NSLog(@"# of markers: %d\n", markers->mNumberMarkers );
快速概览: 我正在开发 Mac Swift 桌面音频应用程序。我 运行 遇到的情况似乎需要我点击 AudioToolbox C api 才能获得 AudioFileMarkerList。在任何较新的 AVStuff 中似乎都不支持此功能,因此您似乎仍然需要使用 AudioToolbox API。
我很想听听有人在处理这些 C 结构方面有经验,甚至更好,将它们与 Swift 联系起来。或者,如果有另一种方法可以从我丢失的声音文件中检索标记 - 我也很想知道。
这是答案,以防以后有人遇到这个问题。
// get size of markers property (dictionary)
UInt32 propSize;
UInt32 writable;
[EZAudioUtilities checkResult:AudioFileGetPropertyInfo( self.audioFileID,
kAudioFilePropertyMarkerList,
&propSize,
&writable)
operation:"Failed to get the size of the marker list"];
size_t length = NumBytesToNumAudioFileMarkers( propSize );
// allocate enough space for the markers.
AudioFileMarkerList markers[ length ];
if ( length > 0 ) {
// pull marker list
[EZAudioUtilities checkResult:AudioFileGetProperty( self.audioFileID,
kAudioFilePropertyMarkerList,
&propSize,
&markers)
operation:"Failed to get the markers list"];
} else {
return NULL;
}
//NSLog(@"# of markers: %d\n", markers->mNumberMarkers );