【问题标题】:I do not know how to properly use CMTimeRange and CMTime in Swift or Objc我不知道如何在 Swift 或 Objc 中正确使用 CMTimeRange 和 CMTime
【发布时间】:2016-12-12 07:03:09
【问题描述】:
早上好。
首先,我一直在学习 Swift,不到 3 周我还没有开始开发 IOS。
并且我想实现获取当前用户的音乐文件(mp3)并显示和播放波形的功能。
我们正在使用一个名为 SCWaveformView 的开源软件来显示波形。
这里是SCWaveformView!
上面提到的库的用法如下。
// 设置资产
AVAsset *asset = [AVURLAsset URLAssetWithURL:[NSURL URLWithString:@"blabla.mp3"]];
波形视图.资产 = 资产;
// 仅显示资产的第一秒
波形视图.timeRange = CMTimeRangeMake(kCMTimeZero, CMTimeMakeWithSeconds(1, 1));
// 在滚动视图中使用它
SCScrollableWaveformView *scrollableWaveformView = [SCScrollableWaveformView new];
scrollableWaveformView.waveformView; // 从那里访问waveformView
例如,我有一个 3 分 25 秒的 MP3 文件。
您可以向用户显示此文件的 15 秒波形并滚动查看其他波形。
换言之,用户可见波形的最大长度为 15 秒。
您可以滚动浏览波形并以 15 秒为增量查看 MP3 文件。
通过滚动
如果开始时间为 2 分 15 秒,则最多可以看到 2 分 30 秒的波形。
如果开始时间为 2 分 20 秒,则最多可以看到 2 分 45 秒的波形。
库似乎不是问题,但我无法理解 CMTimeRange 和 CMTime。
滚动很慢,有时不起作用。出现以下错误信息:
2016-12-12 15:29:03.568654 AppName[7765:2094292] CMTimeMakeWithSeconds(0.200 秒,时间刻度 1):警告:由于时间刻度非常低,引入了 -0.200 的错误
2016-12-12 15:29:03.584947 AppName[7765:2094292] CMTimeMakeWithSeconds(0.240 秒,时间刻度 1):警告:由于时间刻度非常低,引入了 -0.240 的错误
2016-12-12 15:29:03.585166 AppName[7765:2094292] CMTimeMakeWithSeconds(0.240 秒,时间刻度 1):警告:由于时间刻度非常低,引入了 -0.240 的错误
2016-12-12 15:29:03.602243 AppName[7765:2094292] CMTimeMakeWithSeconds(0.280 秒,时间刻度 1):警告:由于时间刻度非常低,引入了 -0.280 的错误
2016-12-12 15:29:03.618334 AppName[7765:2094292] CMTimeMakeWithSeconds(0.460 秒,时间刻度 1):警告:由于时间刻度非常低,引入了 -0.460 的错误
2016-12-12 15:29:03.634987 AppName[7765:2094292] CMTimeMakeWithSeconds(0.480 秒,时间刻度 1):警告:由于时间刻度非常低,引入了 -0.480 的错误
2016-12-12 15:29:03.651538 AppName[7765:2094292] CMTimeMakeWithSeconds(0.480 秒,时间刻度 1):警告:由于时间刻度非常低,引入了 -0.480 的错误
2016-12-12 15:29:03.668358 AppName[7765:2094292] CMTimeMakeWithSeconds(0.720 秒,时间刻度 1):警告:由于时间刻度非常低,引入了 -0.720 的错误
2016-12-12 15:29:03.697401 AppName[7765:2094292] CMTimeMakeWithSeconds(0.340 秒,时间刻度 1):警告:由于时间刻度非常低,引入了 -0.340 的错误
2016-12-12 15:29:03.715348 AppName[7765:2094292] CMTimeMakeWithSeconds(0.480 秒,时间刻度 1):警告:由于时间刻度非常低,引入了 -0.480 的错误
我有问题的代码如下。
let musicAsset = AVAsset(url: (item?.assetURL)!)
self.scwaveScrollView.waveformView.asset = musicAsset
self.scwaveScrollView.waveformView.precision = 0.25
self.scwaveScrollView.waveformView.timeRange = CMTimeRangeMake(self.scwaveScrollView.waveformView.timeRange.start, CMTimeMakeWithSeconds(15, 1));
我认为我对CMTimeRange和CMTime有误解,但是我阅读官方文档时不知道确切的问题。
如何解决问题并得出上述结果?
提前致谢。
【问题讨论】:
标签:
ios
objective-c
iphone
swift
waveform