swift-音頻播放

先來個效果瞅瞅,小姐姐還是挺漂亮的,??,一些基礎功能,如果需要更多請二次加工,如有問題請大佬指正

AA5FF1FA651F19C4B0EAD9B3B2EBE8E0.png
    //
    //  ViewController.swift
    //  Swift-AVPlayer
    //
    //  Created by 品德信息 on 2016/12/29.
    //  Copyright ? 2016年 品德信息. All rights reserved.
    //
    import UIKit
    import AVFoundation
    import MediaPlayer
    import AVKit
    import AudioToolbox  //導入音頻工具箱框架,使用系統聲音服務

    class ViewController: UIViewController {
    //初始化音頻播放對象,將音頻播放對象,作為試圖控制器的類的屬性
    
    var audioPlayer:AVAudioPlayer = AVAudioPlayer()
    //創建一個視頻播放控制器屬性,用于視頻播放
    var mediaPlayer:MPMoviePlayerController = MPMoviePlayerController()
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        //本地的音樂的播放:
        self.localMusic()
        //背景音樂的播放需要現在info.plist進行社會 Required background。。。
        self.backgroundMusic()
      //視頻播放
    //        self.mediaPlayerViedo()
        //ios 8 的新類用于視頻播放
    //        AVPlayerViewController
        
        //聲明一個系統聲音標志類型的聲音變量
        var soundID:SystemSoundID = 0
        let path = Bundle.main.path(forResource: "callRing", ofType: "mp3")
        //路徑找不到就會報內存錯誤的
        let soundUrl = URL(fileURLWithPath: path!)
        AudioServicesCreateSystemSoundID(soundUrl as CFURL, &soundID)
        
        
        
    }
    func mediaPlayerViedo() {
        //視頻播放前首先創建一個異常捕捉語句
        do{
            let path = Bundle.main.path(forResource: "loginmovie", ofType: "mp4")
            let movieUrl = URL(fileURLWithPath:path!)
            mediaPlayer = MPMoviePlayerController(contentURL:movieUrl)
            //設置音頻播放為全屏
            mediaPlayer.controlStyle = MPMovieControlStyle.fullscreen
            mediaPlayer.view.frame = self.view.bounds
            //設置開始時間
            mediaPlayer.initialPlaybackTime = -1
            self.view.addSubview(mediaPlayer.view)
            
            mediaPlayer.play()
            //添加一個通知用來監聽視頻播放是否結束
            NotificationCenter.default.addObserver(self, selector: #selector(ViewController.movieFinished(notify:)), name: .MPMoviePlayerPlaybackDidFinish, object: mediaPlayer)
            
        }catch
        {
            print(error)
        }
    }
    //創建一個方法用來響應視頻播放
    func movieFinished(notify:NSNotification) {
        print("movie ends")
        //獲取視頻播放控制器
        let player = notify.object
        NotificationCenter.default.removeObserver(self, name: NSNotification.Name.MPMoviePlayerPlaybackDidFinish, object: player)
        
    }
    func backgroundMusic()  {
        //獲取音頻會話對象,改對象屬于單利模式,也就是說不用開發者寫,自行實例化,這個類在各種音頻環境中起著非常重要的作用
        let session = AVAudioSession.sharedInstance()
        //在音頻播放前,首先創建一個異常捕捉語句
        do{
            //啟動音頻會話管理,此時會阻斷后臺音樂播放
            try session.setActive(true)
            //設置音頻播放類別,表示該應用僅支持音頻播放
            try session.setCategory(AVAudioSessionCategoryPlayback)
            
            //定義一個字符串變量,描述聲音文件的路徑
            let path = Bundle.main.path(forResource: "callRing", ofType: "mp3")
            //將字符串路徑轉化為網址路徑
            let soundUrl = URL(fileURLWithPath: path!)
            
            try audioPlayer = AVAudioPlayer(contentsOf:soundUrl)
            //為音頻播放做好準備
            audioPlayer.prepareToPlay()
            //設置音量
            audioPlayer.volume = 1.1
            audioPlayer.numberOfLoops = -1
            audioPlayer.play()
            
        }catch{
            print(error)
        }

    }
    
    func localMusic()  {
        let path = Bundle.main.path(forResource: "callRing", ofType: "mp3")
        //        public init(fileURLWithPath path: String)
        let soundUrl = URL(fileURLWithPath: path!)
        
        //在音頻播放前首先創建一個異常捕捉語句
        do{
            //對音頻播放對象進行初始化,并加載指定的音頻播放對象
            //            public init(contentsOf url: URL) throws
            
            try audioPlayer = AVAudioPlayer(contentsOf:soundUrl)
            //設置音頻對象播放的音量的大小
            audioPlayer.volume = 1.0
            //設置音頻播放的次數,-1為無限循環播放
            audioPlayer.numberOfLoops = -1
            audioPlayer.play()
        }catch{
            print(error)
        }

    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    }

git地址

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容