ios - 使用 ScheduledAudioFileRegion 安排整个文件

标签 ios macos swift core-audio audiounit

在 Objective-C 中,我们像这样填写 ScheduledAudioFileRegion 结构:

ScheduledAudioFileRegion playRegion;
playRegion.mTimeStamp.mFlags = kAudioTimeStampSampleTimeValid;
playRegion.mTimeStamp.mSampleTime = 0;
playRegion.mCompletionProc = NULL;
playRegion.mCompletionProcUserData = NULL;
playRegion.mAudioFile = audioFileID;
playRegion.mLoopCount = 0;
playRegion.mStartFrame = 0;
playRegion.mFramesToPlay = -1;

mFramesToPlay 设置为 -1 以告诉它播放整个文件。

Swift 不允许我将 UInt32 设置为 -1。那么我该如何让它播放整个文件呢?

我知道这不是唯一一个将 UInt32 的负值用作 Obj-C 中的标志的地方,但这是我第一次遇到它。

最佳答案

mFramesToPlay 是一个 UInt32,Swift 不会隐式转换 有符号和无符号整数之间。你可以写

playRegion.mFramesToPlay = UInt32(bitPattern: -1)

或者只是

playRegion.mFramesToPlay = UInt32.max

关于ios - 使用 ScheduledAudioFileRegion 安排整个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27992634/

相关文章:

ios - 阻止 SKSpriteNode 离开 View (Swift)

ios - Swift:当截断(环绕)屏幕并转到新行时,将长字符串拆分为较小的字符串

objective-c - 锁定等待@synchronized

ios - 如何从它的项目 ViewControllers 访问 UITabBarController 的变量

c++ - 当可插入的 Cocoa 应用程序仅公开 C++ API 时,如何在插件中显示一个窗口?

cocoa - 获取 Mac UI 中当前选定的项目

ios - swift -线程 1 : Signal SIGABRT

ios - UICollectionView(自动调整大小).reloadData() 将 contentOffset 重置为 0(顶部)

iphone - iOS 5支持web.app中的背景音频吗? (需要开发人员进行测试)

macos - 我怎么能从我的主机 ping 我的 docker 容器