您好,登錄后才能下訂單哦!
前言
我們在平時的iOS開發(fā)中,音視頻的播放有很多種,目前系統(tǒng)的自帶的都屬于 AVFoundation 框架,更加接近于底層,所以靈活性很強(qiáng),更加方便自定義
還有就是第三方音視頻視頻播放,特點是功能強(qiáng)大,實現(xiàn)簡單,支持流媒體,下面來逐一介紹,給大家參考學(xué)習(xí),下面來一起看看詳細(xì)的介紹吧。
播放系統(tǒng)音效或者短音效
注意:
if let soundURL = Bundle.main.url(forResource: "sourceName", withExtension: "wav") { var mySound: SystemSoundID = 0 AudioServicesCreateSystemSoundID(soundURL as CFURL, &mySound) // Play AudioServicesPlaySystemSound(mySound); }
播放音樂 - AVAudioPlayer
定義一個播放器屬性
// 定義一個播放器屬性 fileprivate var player: AVAudioPlayer?
初始化并開始播放音樂
func playMusic() { // 2.獲取對應(yīng)音樂資源 guard let fileUrl = Bundle.main.url(forResource: "309769", withExtension: "mp3") else { return } // 3.創(chuàng)建對應(yīng)的播放器 do { player = try AVAudioPlayer(contentsOf: fileUrl) } catch { print(error) } // 設(shè)置代理監(jiān)聽播放完成 player?.delegate = self // 4.準(zhǔn)備播放 player?.prepareToPlay() // 5.播放音樂 player?.play() }
停止、暫停
// 停止、暫停 player?.stop()
監(jiān)聽 AVAudioPlayer 播放完成
// MARK: - AVAudioPlayerDelegate extension ViewController: AVAudioPlayerDelegate { /// 完成播放 func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) { if flag { print("播放完成") } } }
使用 AVPlayer 進(jìn)行視頻的播放
AVPlayer的對象要設(shè)置為全局的,否則會播放不成功
AVPlayer存在于AVFoundation中,可以播放音樂、本地音頻和流媒體播放
但是它對視屏有很高自由度的控制,而且能夠自定義視屏播放界面
通過通知監(jiān)聽播放的進(jìn)度及相關(guān)參數(shù)
AVPlayer三要素
func playVideo() { // 1.創(chuàng)建AVPlayer guard let url = URL(string: "http://baobab.wdjcdn.com/14559682994064.mp4") else { return } // 2.創(chuàng)建播放器 // 提供數(shù)據(jù),設(shè)置數(shù)據(jù)源 let item = AVPlayerItem(url: url) // 負(fù)責(zé)控制播放,暫停、播放、指定時間播放等 let player = AVPlayer(playerItem: item) // 3.創(chuàng)建圖層,負(fù)責(zé)顯示 let layer = AVPlayerLayer(player: player) layer.frame = playerView.bounds playerView.layer.addSublayer(layer) // 4.播放視頻 player.play() }
使用 IJKMediaFramework 進(jìn)行視頻的播放
ijkPLayer是Bilibili基于ffmpeg開發(fā)并開源的輕量級視頻播放器,支持播放本地網(wǎng)絡(luò)視頻,也支持流媒體播放
功能很強(qiáng)大,支持視頻的軟解碼和硬解碼
手動導(dǎo)入 IJKMediaFramework.framework SDK, 添加 libz.tbd依賴
import IJKMediaFramework
初始化播放器并進(jìn)行播放
func playVideoByIJKPlayer() { // 1.設(shè)置配置,打開硬解碼 let options = IJKFFOptions.byDefault() options?.setOptionIntValue(1, forKey: "videotoolbox", of: kIJKFFOptionCategoryPlayer) // 2.初始化播放器 guard let ijkPlayer = IJKFFMoviePlayerController(contentURLString: "http://baobab.wdjcdn.com/14559682994064.mp4", with: options) else { return } ijkPlayer.view.frame = playerView.bounds playerView.addSubview(ijkPlayer.view) // 3.開始進(jìn)行播放 ijkPlayer.prepareToPlay() }
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。