ObjectiveC/CMTime - 将 AVPlayer.duration 转换为毫秒

发布于 2024-11-06 16:26:38 字数 200 浏览 4 评论 0原文

我正在创建一个用于播放铃声的应用程序,我想知道每次播放铃声的当前时间(以毫秒为单位)。

CMTime cTime =player_.currentTime; 浮动当前时间 = cTime.value / cTime.timescale;

这里的 currentTime 获取以秒为单位的值。 如何获得精确的 currentTime 值(以毫秒为单位)?

I'm creating an app for playing a ringtone and I'd want to know the current time in milliseconds of the played ringtone every time.

CMTime cTime = player_.currentTime;
float currentTime = cTime.value / cTime.timescale;

That currentTime here gets the value in seconds.
How can I get the exact currentTime value but in milliseconds?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

寂寞陪衬 2024-11-13 16:26:38

有一种方法可以以秒为单位获取当前时间,您可以将其乘以 1000 倍,然后您就得到了毫秒:

Float64 dur = CMTimeGetSeconds([player currentTime]);
Float64 durInMiliSec = 1000*dur;

遗憾的是您必须将其用作 floatFloat64您不能将该结果用作 CMTime

There is a way to get current times in seconds, you can take 1000 times that and ther you have your miliseconds:

Float64 dur = CMTimeGetSeconds([player currentTime]);
Float64 durInMiliSec = 1000*dur;

Sadly you will have to use it as a float or Float64 you can't use that result as a CMTime

愁杀 2024-11-13 16:26:38

我认为接受的答案丢失了细节。获取毫秒的更准确方法如下:

let seconds : Double = Float64(time.value * 1000) / Float64(time.timescale)

如果先转换为秒,则会失去精度。

I think that the accepted answer loses detail. A more accurate way to get milliseconds would be the following:

let seconds : Double = Float64(time.value * 1000) / Float64(time.timescale)

If you convert to seconds first you'd lose precision.

半﹌身腐败 2024-11-13 16:26:38

CMTime.value 和 CMTime.timescale 都是整数,因此根据您的代码判断,结果会四舍五入,并且您不会获得精确的时间戳。尝试使用 CMTimeGetSeconds 代替。

CMTime.value and CMTime.timescale are both integers, so judging by your code, the result gets rounded and you don't get a precise timestamp. Try CMTimeGetSeconds instead.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文