首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将MusicTimeStamp (AudioToolbox)转换为毫秒

将MusicTimeStamp (AudioToolbox)转换为毫秒
EN

Stack Overflow用户
提问于 2017-02-19 18:38:21
回答 2查看 281关注 0票数 0

我使用的是米米迪框架,这使用的是AudioToolbox类型的MusicTimeStamp

如何将此时间戳转换为毫秒?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-21 05:31:53

MusicTimeStamp是一个原始的节拍计数,您需要知道您正在处理的音乐的速度(以及节奏映射,速度不是不变的),以便将其转换为毫秒。

MusicSequence之外,MTS不能映射到墙时间。

编辑:如果有帮助,可以将CoreMedia CMTime转换为墙时间。

票数 1
EN

Stack Overflow用户

发布于 2019-09-02 06:18:56

在MIKMIDI中有新的API。在我写这篇文章时,它在一个分支(1.8)中,但是应该很快被合并,并在1.8版本中发布。它可以让你更容易完成你想要的转换。

在一个序列的上下文中,做:

代码语言:javascript
复制
let seconds = sequence.timeInSeconds(forMusicTimeStamp: musicTimeStamp)

还有一种方法可以向相反的方向转换。MIKMIDISequencer有非常类似的,但更复杂(考虑循环,节奏覆盖等)。方法进行相同类型的转换。

在MIKMIDI中没有这个新的API,您仍然可以使用MusicSequenceGetSecondsForBeats()。可以使用MIKMIDISequencemusicSequence属性获取MIKMIDISequence的底层musicSequence

代码语言:javascript
复制
var timeInSeconds = Float64(0)
MusicSequenceGetSecondsForBeats(sequence, musicTimeStamp, &timeInSeconds)

据我所知,即使您是用MusicPlayer API执行循环,也不考虑循环,如果在MIKMIDISequencer上设置了循环,当然也不会考虑重写的速度,所以如果可能的话,您应该更喜欢使用MIKMIDI的API。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42331243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档