【问题标题】:CoreAudio: the proper method of reading an AudioFileMarkerList?CoreAudio:读取 AudioFileMarkerList 的正确方法?
【发布时间】:2016-06-07 01:37:33
【问题描述】:

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

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

【问题讨论】:

    标签: objective-c swift core-audio audiotoolbox ezaudio


    【解决方案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 );
    

    【讨论】:

    • 有什么办法可以把它转换成 Swift 吗?我已经尝试了一周stackoverflow.com/questions/44743239/…
    • 我发现将 C 代码留在 C 中是有意义的,但它也应该在 swift 中工作。如果我有时间,我会为你转换它。
    • 见这里:stackoverflow.com/questions/44743239/… 一个几乎可以工作的 Swift 示例。总的来说,尽管为此使用 Obj-C 要简单得多。更少的代码。
    • 我认为你分配了太多内存,正确的方法是 AudioFileMarkerList* 标记;标记 = reinterpret_cast(new Byte[length]);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多