- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面是我用一些网址播放 AVQueueplayer 的代码,但播放第一首歌曲几乎需要 10-20 秒。我有 10 首歌曲,但为了引用和精简,我在这里只保留了一首歌。
arrSongs = ["http://radiotaj.com/music/1/1836.mp3"]
let index = 0
let strSong = (arrSongs.object(at: index)) as? String
playerItem = AVPlayerItem(url: URL(string:strSong!)!
let playerItems = [playerItem]
player = AVQueuePlayer(items : playerItems as! [AVPlayerItem])
player.play()
以下是我已经尝试过的解决方案
非常感谢任何帮助。
谢谢!
最佳答案
您可以尝试以下代码,它对我有用。这是没有 Alamofire 的版本(将 yourURL
替换为实际链接):
override func viewDidLoad() {
super.viewDidLoad()
downloadFileFromURL(url: URL(string: yourURL)!)
}
func play(url: URL) {
do {
let songData = try Data(contentsOf: url, options: NSData.ReadingOptions.mappedIfSafe)
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
player = try AVAudioPlayer(data: songData, fileTypeHint: AVFileTypeAppleM4A)
player!.prepareToPlay()
player!.play()
} catch {
print(error)
}
}
func downloadFileFromURL(url: URL) {
var downloadTask = URLSessionDownloadTask()
downloadTask = URLSession.shared.downloadTask(with: url, completionHandler: {
customURL, response, error in
self.play(url: customURL!)
})
downloadTask.resume()
}
使用 Alamofire 速度更快,它基本上将文件下载到 Documents 文件夹中并从这里播放(不要忘记安装 Alamofire 并在类外部输入 import Alamofire
:
func play(url: URL) {
do {
let songData = try Data(contentsOf: url, options: NSData.ReadingOptions.mappedIfSafe)
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
player = try AVAudioPlayer(data: songData, fileTypeHint: AVFileTypeAppleM4A)
player!.prepareToPlay()
player!.play()
} catch {
print(error)
}
}
override func viewDidLoad() {
super.viewDidLoad()
let destination: DownloadRequest.DownloadFileDestination = { _, _ in
var documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
documentsURL.appendPathComponent("song."+"mp3")
return (documentsURL, [.removePreviousFile])
}
Alamofire.download(yourURL, to: destination).response { response in
if response.destinationURL != nil {
songURL = response.destinationURL!
self.play(url: songURL!)
}
}
}
关于ios - AVQueuePlayer 需要很多时间来播放第一首歌曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41998863/
我有一个 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 一个接一个地播放记录,没有间隙。为了实现无间隙黑白播
我是一名优秀的程序员,十分优秀!