问题标签 [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.
swift - AVPlayer seekToTime 无法正常工作
我在使用 AVPlayer.seekToTime 搜索时遇到问题,我有想要在这样的 scrollViewDidScroll 方法中搜索的时间索引:
但是视频并不流畅。例如,当您滚动时,我希望视频仅向前移动 0.01 秒(我拥有的视频非常短,只有大约 2.0 秒长),但是当您滚动得足够远时,视频却向前移动了近一秒. 它真的很不稳定,我不知道为什么我不能尝试说 1.00 秒到 1.01 秒,并让图像代表玩家移动的时间索引。这可能吗?我究竟做错了什么?请帮忙!
PS:如果这有帮助,我从不调用 self.playerController.player?.play()
ios - AVPlayer 的 addPeriodicTimeObserverForInterval 中的 CMTime:回调永远不会达到项目的持续时间
我使用 AVPlayer 的-(id)addPeriodicTimeObserverForInterval: queue: usingBlock:
方法将 UI 更新为播放进度。但是,我的进度条永远不会结束。
日志:
点击播放按钮
我不应该期望最后一个数字3968.0
吗?
音频从服务器流式传输。
编辑
无论实际持续时间长度是多少,最后进度编号始终是。 duration - 0.264 sec
这太奇怪了,我希望我们可以在 SO 上使用表情符号。
swift - 编辑视频的一部分(使用 AVFoundation)
我有一些代码,在下面提供。这将采用 2 个视频资产,并将第二个资产插入到第一个资产中。截至目前,我AVMutableComposition
每次都调用一个新的并返回一个全新的组合,这很耗时。我想有一种方法可以删除一段视频,插入另一段,而不必制作整个作品。有什么建议么?(代码有效,真正寻找时间消耗减少)。
1)有没有办法只更改视频的一部分而不是(这是我目前每次需要更改视频时都在做的事情)
- 1) 制作一个新的 AVMutableComposition
- 2)添加第一个视频
- 3)添加第二个视频
- 4)添加第一个视频的最后一部分
或者有没有办法......(我想做什么)
- 1) 获取第一个视频
- 2)去设定我想改变的时间(比如10秒)
- 3)删除我想要的时间量,然后插入第二个视频的时间
- 4) 没有第 4 步,因为我只会更改一部分视频,而不是重新创建一个全新的视频。
我当前的代码
ios - AVAssetExportSession 只工作前 6 次
更新了代码示例、控制台输出和信息
我正在尝试获取视频合成的总持续时间,将其除以 10,四舍五入,然后循环遍历并以这些间隔拼接视频合成。
它可以工作,但在“currentDuration”变为 60+ 后,它会抛出“在此服务器上找不到请求的 URL”。
基本上,如果它确定它需要产生 9 个剪辑,它会成功前 6 个,而其他 3 个则失败。此外,我的 numLoop 没有按预期工作,似乎 while 循环在尝试 9 个剪辑中的任何一个之前完成。
希望获得所有 9 个剪辑导出的帮助/见解。
我注意到如果视频长度少于 60 秒,它的成功率是 100%。我选择的任何超过 60 秒的视频都将在第 7 个剪辑上失败。
这是我的方法:
这是 exportDidFinish 方法:
这是控制台输出:
ios - 在 iOS 中不使用播放方法显示视频帧
我试图了解视频文件中 CMTime 和 fps 的功能。我正在尝试使用 for 循环在 AVPlayer 中呈现视频的每一帧。我知道使用 AVPlayer 的播放方法可以轻松完成此任务。但我想知道帧是如何显示的。我创建了一个 for 循环,并尝试通过不断更新 AVPlayer 的 seekToTime 方法来一一呈现每一帧。我能够开发一个解决方案,但它没有显示所有帧并且视频看起来很生涩。
这是我的代码:
在这里,player 是 AVPlayer 的实例,asset 是我要呈现的帧的视频资源。我也尝试过使用 CMTimeMakeSeconds(t,asset.duration.timescale),但没有奏效。
请给出你的建议。谢谢你。
swift - Swift 3 中的 CMTIME_COMPARE_INLINE?
想要比较CMTime
并基于我正在执行循环。转换ObjectiveC
为Swift
,我找不到合适的方法CMTIME_COMPARE_INLINE
。
有没有人在任何版本中遇到过类似的问题Swift
?
ios - 从 CMTime 获取要在 AVPlayer 中使用的有效浮点值
我试图将滑块设置为正在播放的音频文件的当前值。但是在设置滑块的值时我遇到了问题。
当我使用 ViewDidLoad 中的计时器时:
它调用我的函数:
音轨开始跳跃,滑块在跳跃,并将其返回到控制台:
当我尝试使用此代码设置最大值时:
我收到此错误:
我已经阅读了所有内容,他们都有简单的解决方案,比如
这是行不通的。因为你不能直接将 CMT 转换为在 swift 3 中浮动????
所以我的问题是如何设置滑块的值?
如果我的解释不清楚,这就是整个课程的亮点:
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。我想我只需要添加一次观察者,然后一起取消计时器吗?
ios - 使 CMTime 具有非常小的值
我有一个小的整数值,我想将其转换为 CMTime。
问题是
CMTime(值: _ , timeScale: _)
或者
CMTimeMakeWithSeconds(值:_,timeScale:_)
将始终返回地板,以便时间始终等于0.0 seconds