iOS - 使用音樂的背景播放功能,使用MediaPlayer架構播放影片(Swift)

來源:互聯網
上載者:User

標籤:prepare   content   remote   sub   name   role   模式   初始化   self   

1. 使用音樂的背景播放功能

(1) 匯入音頻播放架構

import AVFoundation

(2) 建立音頻播放對象

  //初始化音頻播放器對象,並將音頻播放對象,作為視圖控制器類的屬相。

    var audioPlayer:AVAudioPlayer = AVAudioPlayer()

    

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

        

    

        //獲得音頻會話對象,該對象屬於單例模式,也就是說不用開發人員而自行執行個體化.這個類在各種音頻環境中,起著重要作用

        let session = AVAudioSession.sharedInstance()

        

        //在音頻播放前,首先建立一個異常捕捉語句

        do {

            

            //啟動音頻會話管理,此時會阻斷後台音樂的播放.

            try session.setActive(true)

            //設定音頻操作類別,表示該應用僅支援音訊播放.

            try session.setCategory(AVAudioSessionCategoryPlayback)

            //設定應用程式支援接受遠端控制事件

            UIApplication.sharedApplication().beginReceivingRemoteControlEvents()

            

            

            //定義字串變數,描述音效檔路徑

            let path = NSBundle.mainBundle().pathForResource("music", ofType: "mp3")

            //將字串路徑,轉換為網址路徑

            let soundUrl = NSURL(fileURLWithPath: path!)

            

            //對音頻播放對象,進行初始化,並載入制定的音頻檔案

            try audioPlayer = AVAudioPlayer(contentsOfURL: soundUrl)

            //為音頻播放做好準備

            audioPlayer.prepareToPlay()

            //設定音頻播放對象播放音量的大小

            audioPlayer.volume = 1.0

            //播放次數

            audioPlayer.numberOfLoops = -1 //-1:無限迴圈播放

            audioPlayer.play()

            

        }catch {

            

            print(error)

        }

        

    }

2. 使用MediaPlayer架構播放影片

(1) 匯入媒體播放器架構,該架構允許訪問音頻和視頻,音頻和視頻檔案的播放器

import MediaPlayer

 (2)建立一個視頻播放器

    //建立一個視頻播放器屬性,用於播放視頻

    var mediaPlayer:MPMoviePlayerController = MPMoviePlayerController()

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

        do {

            //擷取沙箱目錄中,視頻檔案的所在路徑.

            let path = NSBundle.mainBundle().pathForResource("movie", ofType: "mp4")

            //將字串路徑,轉化為NSUrl路徑

            let movieUrl = NSURL(fileURLWithPath: path!)

            //初始化

            mediaPlayer = MPMoviePlayerController(contentURL: movieUrl)

            //設定視頻播放模式為全屏播放.

            mediaPlayer.controlStyle = MPMovieControlStyle.Fullscreen

            mediaPlayer.view.frame = self.view.bounds   

            //設定視頻播放的開始時間

            mediaPlayer.initialPlaybackTime = -1

            

            

            //將視頻播放控制器,添加到當前視圖控制器的根視圖

            self.view.addSubview(mediaPlayer.view)

            

            //添加一個通知,監聽視頻播放是否結束.

            NSNotificationCenter.defaultCenter().addObserver(self, selector:#selector(ViewController.movieFinished(_:)), name:MPMoviePlayerPlaybackDidFinishNotification, object: mediaPlayer)

            mediaPlayer.play()

        } catch {

            

            print(error)

        }

    }    

    //create a method to react 視頻播放的結束時間

    func movieFinished(notifi:NSNotification) {

        print("Movie ends")

        //擷取視頻播放控制器

        let player = notifi.object

        

        //取消通知的監聽,釋放資源

        NSNotificationCenter.defaultCenter().removeObserver(self, name: NSNotification.Name.MpMoviePlayerPlaybackDidFinish, object: player)

        

    }

iOS - 使用音樂的背景播放功能,使用MediaPlayer架構播放影片(Swift)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.