如图,视频通话等待时,实现音频循环播放。

 使用:

import UIKit

class CallPrepareAlertView: FWPopupView {

    deinit {
        CMSoundPlayer.shared.stop()
    }

    override func awakeFromNib() {
        super.awakeFromNib()
		DispatchQueue.global().asyncAfter(deadline: .now()) {
            CMSoundPlayer.shared.playCallSound()
        }
    }

}

播放器:

import Foundation
import AVFoundation

class CMSoundPlayer: NSObject {
    
    static let shared = CMSoundPlayer()
    var queuePlayer = AVQueuePlayer()
    var playerLooper: AVPlayerLooper?
    
    func playWithURL(_ url: URL) {
        CMAudioHelper.onlyActivePlay()
        let playerItem = AVPlayerItem(asset: AVAsset(url: url))
        playerLooper = AVPlayerLooper(player: queuePlayer, templateItem: playerItem)
        play()
    }
    
    func play() {
        queuePlayer.play()
    }
    
    func pause() {
        queuePlayer.pause()
    }
    
    func stop() {
        pause()
    }
    
}

extension CMSoundPlayer {
    
    /// 拨打视频电话等待时的声音
    func playCallSound() {
        guard let url = Bundle.main.url(forResource: "callsound", withExtension: "mp3") else { return }
        playWithURL(url)
    }

	func playFormSkipForm() {
        guard let url = Bundle.main.url(forResource: "formSkipForm", withExtension: "mp3") else { return }
        playWithURL(url)
    }
    
}

结合另一篇使用效果更好,应用内播放音视频不影响后台音乐播放

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐