- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在我的应用程序中使用 AVQueuePlayer
。我有两个滑动手势可以跳到下一个和跳到上一个 avplayeritems。现在要跳到下一个,我只是在运行良好的 avqueueplayer 上调用 advanceToNextItem。
然而,跳到上一个我正在删除所有项目并将它们重新添加到前面的上一个视频中,这在多次跳到上一个时真的很慢。我怎样才能让它更快,就像调用 advanceToNextItem
一样?
我的代码是这样的:
func skipToPrevious() {
queuePlayer.removeAllItems()
// move the previous playerItem to the front of the list then add them all back in
for playerItem in playerItems:
queuePlayer.insertItem(playerItem, afterItem: nil)
}
最佳答案
似乎 AVQueuePlayer
在调用 advanceToNextItem
时从播放队列中删除了当前项目。理论上,如果不重建队列,就无法取回该项目。
你可以做的是使用一个标准的 AVPlayer
,有一个 AVPlayerItems
数组,以及一个保存当前轨道的索引的整数索引。
swift 3:
let player = AVPlayer()
let playerItems = [AVPlayerItem]() // your array of items
var currentTrack = 0
func previousTrack() {
if currentTrack - 1 < 0 {
currentTrack = (playerItems.count - 1) < 0 ? 0 : (playerItems.count - 1)
} else {
currentTrack -= 1
}
playTrack()
}
func nextTrack() {
if currentTrack + 1 > playerItems.count {
currentTrack = 0
} else {
currentTrack += 1;
}
playTrack()
}
func playTrack() {
if playerItems.count > 0 {
player.replaceCurrentItem(with: playerItems[currentTrack])
player.play()
}
}
swift 2.x:
func previousTrack() {
if currentTrack-- < 0 {
currentTrack = (playerItems.count - 1) < 0 ? 0 : (playerItems.count - 1)
} else {
currentTrack--
}
playTrack()
}
func nextTrack() {
if currentTrack++ > playerItems.count {
currentTrack = 0
} else {
currentTrack++;
}
playTrack()
}
func playTrack() {
if playerItems.count > 0 {
player.replaceCurrentItemWithPlayerItem(playerItems[currentTrack])
player.play()
}
}
关于ios - 使用 AVQueuePlayer 跳到上一个的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34971839/
我有一个 AVQueuePlayer 可以播放来自互联网的音频文件。它可以在后台与应用程序一起执行,并且效果很好(在后台播放并在后台异步获取新文件)。 当我允许 AVQueuePlayer 在将应用程
我有 5 AVPlayerItems在我的AVQueuePlayer ,设置为 AVPlayerActionAtItemEndAdvance .我在我的 UI 上点击播放,播放第一个,第二个,然后开始
缓冲远程AVPlayerItem时是否可以保持AVQueuePlayer处于 Activity 状态? 当前,当项目进入缓冲状态时,播放停止,并且 MPNowPlayingInfoCenter 设置的
下面是我用一些网址播放 AVQueueplayer 的代码,但播放第一首歌曲几乎需要 10-20 秒。我有 10 首歌曲,但为了引用和精简,我在这里只保留了一首歌。 arrSongs = ["
我有一个 AVQueuePlayer,我在运行时向其中添加了一些项目。 NSArray *queue = [self.queuePlayer items]; if ([self.queuePlayer
对 ios 编程有点陌生。尝试使用 AVQueuePlayer 并播放列表中的多个视频。我已经搜索过,但没有看到与我想要实现的目标相关的示例。如果能指出正确的方向,这个问题可能很容易回答。 我想做的是
我有一个 AVQueuePlayer 属性,其设置如下。 NSLog 语句报告音频应该正常播放(应用程序运行时),但是在模拟器和 iOS 设备本身(iPhone 5s iOS 8.1.1)上进行测试时
我有如下的 QueuePlayer 数组, Print Queue Player array : ( "", "", "" ) 点击按钮我正在播放上面数组中的音频, -(IBA
我使用 avqueueplayer 播放一些非常短的音频。一个项目完成后,将暂停 2 秒,然后播放下一个项目。 问题是,如果播放器暂停,同时按下主页按钮,它不会播放下一个项目,除非我重新进入应用程序。
我用这个视频播放时没有卡顿。但是如何循环播放 secondVideoItem..那是在视频播放后我想将这个视频添加到 10-15time。只有 secondVideoItem 而不是 firstVid
我在 viewDidLoad 方法中设置了一个名为 AVQueuePlayer 的播放器。我还有一个播放该序列的 UIbutton 方法。 这是我的 View 加载方法 AVPlayerItem *f
我正在尝试将采访列表添加到 Xamarin.iOS 中的 AVQueuePlayer,这对我有用。但是,我确实需要能够从我用来创建 AVPlayerItems 的类中获取一些属性 我的面试课: pub
将新项目添加到 AVQueuePlayer 不播放 我有从服务器流式传输 HLS 音频的场景。最初我制作了一个 AVPlayerItem 数组。并初始化 AVQueuePlayer,并在单击按钮时播放
我正在使用 QueuePlayer 播放歌曲列表并且正在播放歌曲。我的问题是我试图在当前项目发生变化时进行跟踪。我尝试向 QueuePlayer 添加观察者,但这不起作用。观察功能没有被调用。任何帮助
我有一个 AVQueuePlayer ,并且在特定情况下,它会在上一首歌曲播放完毕之前开始播放下一首歌曲。它不会同时播放它们,它只是提前切出第一首轨道并开始下一首轨道。当两个轨道都是 http 流时肯
有谁知道 AVQueuePlayer 是否在当前项目即将完成播放时开始缓冲下一个 AVPlayerItem? 我知道文档中没有任何建议,我主要是问是否有人观察到这种行为。 最佳答案 好的,我再次查看了
我使用 AVQueuePlayer 播放一系列从 URL 加载的电影。 我尝试使用我需要播放的所有 AVPlayerItems 数组来初始化播放器实例。 player = [[AVQueuePlaye
我正在尝试开发多文件音频播放器,所以我使用了 AVQueuePlayer,我需要检查播放器何时播放声音或暂停? 对于 AvAudioPlayer,我有属性“isPlaying”,但是对于 AVQueu
我正在使用 AVQueuePlayer用于播放本地保存的多个音频。 供引用,请检查以下代码, for (int j = 0; j < arrPlayData.count; j++) {
我在使用 avqueueplayer 时遇到一些问题,例如当每个项目在队列中结束时,应用程序会卡住 2-3 秒。我正在使用 queueplayer 一个接一个地播放记录,没有间隙。为了实现无间隙黑白播
我是一名优秀的程序员,十分优秀!