如何使用 UISlider 在特定时间从 mpmovieplayer 听到声音?

Posted

技术标签:

【中文标题】如何使用 UISlider 在特定时间从 mpmovieplayer 听到声音?【英文标题】:How to hear sound from mpmovieplayer at a specific time using UISlider? 【发布时间】:2014-04-12 14:03:30 【问题描述】:

我正在开发一个 ios 电影编辑器项目。对于这个编辑器,我使用 MPMoviePlayer 来显示用户选择的视频文件。 我使用自定义控件,并且我有一个 UISlider 可以让用户移动玩家的 currentTime 位置。当用户触摸滑块时,电影会暂停,并且它的 currentTime 会随着 UISlider 的值而变化。 一切正常,但现在我需要让用户在这个 currentTime 位置听到声音。 对于那些了解 iMovie 的人来说,当您将鼠标移到电影事件上时,您会在该位置看到图像并听到声音,这就是我希望在我的编辑器中实现的。 我尝试使用 à NSTimer 调用播放器的播放方法以在 0.2 秒后停止,但结果有点混乱。 有没有人已经做到了做这样的事情? 谢谢 ! 最好的问候。

【问题讨论】:

【参考方案1】:

寻找需要时间;这就是你最终使用计时器的原因。这里真正的问题是 MPMoviePlayerController 虽然方便,因为它为您提供控制,但它是一种生硬的工具。它只是建立在 AVFoundation 之上的一个巨大的简化便利。但是您不需要内置控件,因此我建议您放弃整个实现并开始使用真正的东西,而使用 AVFoundation (AVPlayer 等)。现在,您可以通过一种连贯的方式进行搜索并在搜索完成时收到通知 (seekToTime:completionHandler:),这样您就可以尽快开始玩了。另外,AVFoundation 是您无论如何都要进行所有“编辑”的级别。

【讨论】:

您好,感谢您的回答。我要试一试。如果我理解得很好,事情应该是这样发生的:滑块的 UIControlEventValueChanged 调用播放器的 seekToTime:completionHandler 然后,当completionHandler 完成时,可以调用 AVPlayer 的播放方法。我希望这种方法会比实际快得多。

以上是关于如何使用 UISlider 在特定时间从 mpmovieplayer 听到声音?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Objective-C 中的 UISlider 上添加标记? [关闭]

自动滚动 UISlider

我应该如何在核心数据中存储从 UISlider 读取的百分比值?

iOS 如何从 UISlider 中删除发光/阴影

如何增加 UISlider 的最大轨道的大小?

如何正确创建带有 UISlider 的缩略图选择器以从视频中进行选择?