0

快速概览:我正在开发一个 Mac Swift 桌面音频应用程序。我遇到了一种情况,似乎需要我点击 AudioToolbox C api 才能获得 AudioFileMarkerList。在任何较新的 AVStuff 中似乎都不支持此功能,因此您似乎仍需要使用 AudioToolbox API。

我很想听听有经验的人处理这些 C 结构,甚至更好地将它们与 Swift 联系起来。或者,如果有另一种方法可以从我丢失的声音文件中检索标记 - 我也很想知道。

4

1 回答 1

1

这是答案,以防将来有人遇到此问题。

// 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 );
于 2017-02-20T17:23:43.193 回答