问题标签 [cmtime]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6191 浏览

swift - AVPlayer seekToTime 无法正常工作

我在使用 AVPlayer.seekToTime 搜索时遇到问题,我有想要在这样的 scrollViewDidScroll 方法中搜索的时间索引:

但是视频并不流畅。例如,当您滚动时,我希望视频仅向前移动 0.01 秒(我拥有的视频非常短,只有大约 2.0 秒长),但是当您滚动得足够远时,视频却向前移动了近一秒. 它真的很不稳定,我不知道为什么我不能尝试说 1.00 秒到 1.01 秒,并让图像代表玩家移动的时间索引。这可能吗?我究竟做错了什么?请帮忙!

PS:如果这有帮助,我从不调用 self.playerController.player?.play()

0 投票
2 回答
2335 浏览

ios - AVPlayer 的 addPeriodicTimeObserverForInterval 中的 CMTime:回调永远不会达到项目的持续时间

我使用 AVPlayer 的-(id)addPeriodicTimeObserverForInterval: queue: usingBlock:方法将 UI 更新为播放进度。但是,我的进度条永远不会结束。

日志:

点击播放按钮

我不应该期望最后一个数字3968.0吗?

音频从服务器流式传输。

编辑

无论实际持续时间长度是多少,最后进度编号始终是。 duration - 0.264 sec

这太奇怪了,我希望我们可以在 SO 上使用表情符号。

0 投票
0 回答
419 浏览

swift - 编辑视频的一部分(使用 AVFoundation)

我有一些代码,在下面提供。这将采用 2 个视频资产,并将第二个资产插入到第一个资产中。截至目前,我AVMutableComposition每次都调用一个新的并返回一个全新的组合,这很耗时。我想有一种方法可以删除一段视频,插入另一段,而不必制作整个作品。有什么建议么?(代码有效,真正寻找时间消耗减少)。

1)有没有办法只更改视频的一部分而不是(这是我目前每次需要更改视频时都在做的事情)

  • 1) 制作一个新的 AVMutableComposition
  • 2)添加第一个视频
  • 3)添加第二个视频
  • 4)添加第一个视频的最后一部分

或者有没有办法......(我想做什么)

  • 1) 获取第一个视频
  • 2)去设定我想改变的时间(比如10秒)
  • 3)删除我想要的时间量,然后插入第二个视频的时间
  • 4) 没有第 4 步,因为我只会更改一部分视频,而不是重新创建一个全新的视频。

我当前的代码

0 投票
1 回答
673 浏览

ios - AVAssetExportSession 只工作前 6 次

更新了代码示例、控制台输出和信息

我正在尝试获取视频合成的总持续时间,将其除以 10,四舍五入,然后循环遍历并以这些间隔拼接视频合成。

它可以工作,但在“currentDuration”变为 60+ 后,它会抛出“在此服务器上找不到请求的 URL”。

基本上,如果它确定它需要产生 9 个剪辑,它会成功前 6 个,而其他 3 个则失败。此外,我的 numLoop 没有按预期工作,似乎 while 循环在尝试 9 个剪辑中的任何一个之前完成。

希望获得所有 9 个剪辑导出的帮助/见解。

我注意到如果视频长度少于 60 秒,它的成功率是 100%。我选择的任何超过 60 秒的视频都将在第 7 个剪辑上失败。

这是我的方法:

这是 exportDidFinish 方法:

这是控制台输出:

0 投票
1 回答
327 浏览

ios - 在 iOS 中不使用播放方法显示视频帧

我试图了解视频文件中 CMTime 和 fps 的功能。我正在尝试使用 for 循环在 AVPlayer 中呈现视频的每一帧。我知道使用 AVPlayer 的播放方法可以轻松完成此任务。但我想知道帧是如何显示的。我创建了一个 for 循环,并尝试通过不断更新 AVPlayer 的 seekToTime 方法来一一呈现每一帧。我能够开发一个解决方案,但它没有显示所有帧并且视频看起来很生涩。

这是我的代码:

在这里,player 是 AVPlayer 的实例,asset 是我要呈现的帧的视频资源。我也尝试过使用 CMTimeMakeSeconds(t,asset.duration.timescale),但没有奏效。

请给出你的建议。谢谢你。

0 投票
1 回答
893 浏览

swift - Swift 3 中的 CMTIME_COMPARE_INLINE?

想要比较CMTime并基于我正在执行循环。转换ObjectiveCSwift,我找不到合适的方法CMTIME_COMPARE_INLINE

有没有人在任何版本中遇到过类似的问题Swift

0 投票
0 回答
1241 浏览

ios - 从 CMTime 获取要在 AVPlayer 中使用的有效浮点值

我试图将滑块设置为正在播放的音频文件的当前值。但是在设置滑块的值时我遇到了问题。

当我使用 ViewDidLoad 中的计时器时:

它调用我的函数:

音轨开始跳跃,滑块在跳跃,并将其返回到控制台:

当我尝试使用此代码设置最大值时:

我收到此错误:

我已经阅读了所有内容,他们都有简单的解决方案,比如

这是行不通的。因为你不能直接将 CMT 转换为在 swift 3 中浮动????

所以我的问题是如何设置滑块的值?

如果我的解释不清楚,这就是整个课程的亮点:

0 投票
1 回答
1104 浏览

ios - 使用 Swift 在 AVPlayer 中进行持续时间倒计时的周期时间观察器

我有一个 AVPlayer 的时间观察者,效果很好。我试图让它从音频 0 的持续时间开始倒计时。

它可以工作并且确实倒计时现在我只是在格式化时遇到了一些麻烦。

如果你看到下面的图片,你就会明白我的意思。它从整分钟:秒 3:00 到奇怪的数字 3:-1 等。

在此处输入图像描述 在此处输入图像描述

任何想法我做错了什么?

这是定时器的代码:

0 投票
1 回答
1429 浏览

ios - 以秒为单位播放 AVPlayerItem CurrentTime 返回不一致的值

我正在重组我的音频播放器应用程序以使用 AVQueuePlayer 而不是 AVAudioPlayer,因为我现在意识到我需要能够将音频文件排队以进行播放。由于 AVQueuePlayer 是 AVPlayer 的子类,它使用 CMTime 来跟踪 AVPlayerItem 时间属性(持续时间、currentTime 等),我不得不重新设计我的动画函数,以更新我的 AudioPlayer 视图的滑块和 UILabel。

我发现,既然我使用的是 CMTime 结构,而不是 TimeIntervals,我的 currentSeconds 变量会在音频文件播放时返回一些奇怪的、不一致的值。您可以在我包含的代码下方看到打印结果。

这也导致我的轨道滑块打嗝到不同的位置,并且持续时间标签跳到奇数值,包括播放中途的 00:00。

我对这里发生的很多事情都很陌生,我试图改变 addTimeObserver 函数中的间隔值,我想但它没有改变任何东西。这可能是我计划每 0.1 秒触发一次 animateFooterView() 的 Timer 对象的问题......但我不确定如何解决它。

currentSeconds 的 Print() 输出:

这是我提到的计时器的一瞥,每当 footerView 播放时,它每 0.1 秒调用一次 animateFooterView 。

实际上,我想我刚刚意识到这里出了什么问题......由于计时器触发,我每 0.1 秒添加一个periodicTimeObserver。我想我只需要添加一次观察者,然后一起取消计时器吗?

0 投票
2 回答
1548 浏览

ios - 使 CMTime 具有非常小的值

我有一个小的整数值,我想将其转换为 CMTime。

问题是

CMTime(值: _ , timeScale: _)

或者

CMTimeMakeWithSeconds(值:_,timeScale:_)

将始终返回地板,以便时间始终等于0.0 seconds