国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS開發中音頻視頻播放的簡單實現方法

2019-10-21 18:44:00
字體:
來源:轉載
供稿:網友

前言

我們在平時的iOS開發中,音視頻的播放有很多種,目前系統的自帶的都屬于 AVFoundation 框架,更加接近于底層,所以靈活性很強,更加方便自定義

還有就是第三方音視頻視頻播放,特點是功能強大,實現簡單,支持流媒體,下面來逐一介紹,給大家參考學習,下面來一起看看詳細的介紹吧。

播放系統音效或者短音效

注意:

  • 這里的資源長度最多30秒
  • 資源必須在 Target --> Build Phases --> Copy Bundle Resources 引入資源文件,否則獲取不到文件
if let soundURL = Bundle.main.url(forResource: "sourceName", withExtension: "wav") { var mySound: SystemSoundID = 0 AudioServicesCreateSystemSoundID(soundURL as CFURL, &mySound) // Play AudioServicesPlaySystemSound(mySound);}

播放音樂 - AVAudioPlayer

  • 資源必須在 Target --> Build Phases --> Copy Bundle Resources 引入資源文件,否則獲取不到文件
  • 支持多種音頻格式,而且能夠進行進度、音量、播放速度等控制。

定義一個播放器屬性

// 定義一個播放器屬性fileprivate var player: AVAudioPlayer?

初始化并開始播放音樂

func playMusic() { // 2.獲取對應音樂資源 guard let fileUrl = Bundle.main.url(forResource: "309769", withExtension: "mp3") else {  return } // 3.創建對應的播放器 do {  player = try AVAudioPlayer(contentsOf: fileUrl) } catch {  print(error) } // 設置代理監聽播放完成 player?.delegate = self // 4.準備播放 player?.prepareToPlay() // 5.播放音樂 player?.play()}

停止、暫停

// 停止、暫停player?.stop()

監聽 AVAudioPlayer 播放完成

// MARK: - AVAudioPlayerDelegateextension ViewController: AVAudioPlayerDelegate { /// 完成播放 func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {  if flag {   print("播放完成")  } }}

使用 AVPlayer 進行視頻的播放

AVPlayer的對象要設置為全局的,否則會播放不成功

AVPlayer存在于AVFoundation中,可以播放音樂、本地音頻和流媒體播放

但是它對視屏有很高自由度的控制,而且能夠自定義視屏播放界面

通過通知監聽播放的進度及相關參數

AVPlayer三要素

  • AVPlayerItem(提供數據,設置數據源)
  • AVPlayer(負責控制播放,暫停、播放、指定時間播放等)
  • AVPlayerLayer(負責顯示如果缺少就只有聲音沒有視頻)
func playVideo() { // 1.創建AVPlayer guard let url = URL(string: "http://baobab.wdjcdn.com/14559682994064.mp4") else { return } // 2.創建播放器 // 提供數據,設置數據源 let item = AVPlayerItem(url: url) // 負責控制播放,暫停、播放、指定時間播放等 let player = AVPlayer(playerItem: item) // 3.創建圖層,負責顯示 let layer = AVPlayerLayer(player: player) layer.frame = playerView.bounds playerView.layer.addSublayer(layer) // 4.播放視頻 player.play()}

使用 IJKMediaFramework 進行視頻的播放

ijkPLayer是Bilibili基于ffmpeg開發并開源的輕量級視頻播放器,支持播放本地網絡視頻,也支持流媒體播放

功能很強大,支持視頻的軟解碼和硬解碼

手動導入 IJKMediaFramework.framework SDK, 添加 libz.tbd依賴

import IJKMediaFramework

初始化播放器并進行播放

func playVideoByIJKPlayer() { // 1.設置配置,打開硬解碼 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.開始進行播放 ijkPlayer.prepareToPlay()}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 共和县| 洛扎县| 谢通门县| 平乐县| 长宁县| 淮滨县| 乌什县| 临湘市| 广河县| 铁力市| 义马市| 商洛市| 余庆县| 永善县| 夹江县| 新野县| 丰镇市| 搜索| 柳州市| 菏泽市| 陇川县| 五台县| 久治县| 兴业县| 哈巴河县| 潜江市| 洛南县| 衢州市| 延津县| 德钦县| 宜章县| 平顺县| 房产| 香河县| 革吉县| 剑河县| 安徽省| 汤阴县| 邛崃市| 中江县| 新泰市|