1,AVPlayer介绍 (1) AVPlayer可以用来播放视频,也可以播放任何 iOS支持的音频。 (2) AVPlayer既可以播放本地音频,可以播放网络音频(在线音频)。 (3)要注意的是,如果播放远程音频, AVPlayer同样是全部加载到本地后才开始播放,而不是以流媒体的形式播放。
2,效果图 (1)下面使用 AVPlayer制作一个音乐播放器。 (2)点击按钮可以时音乐在“ 播放”和“ 暂停”两个状态间切换。 (3)播放过程中进度条和旁边的标签会实时显示当前的进度。 (4)进度条滑块可以自由拖动,并播放对应时间点的音乐。
3,样例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | import UIKit AVFoundation class VIEwController : UIVIEwController { //播放按钮 @IBOutlet weak var playbutton: UIbutton ! //可拖动的进度条 playbackSlIDer: UiSlider ! //当前播放时间标签 playTime: UILabel ! //播放器相关 playerItem: AVPlayerItem ? player: AVPlayer ? overrIDe func vIEwDIDLoad() { super .vIEwDIDLoad() //初始化播放器 @H_907_419@let url = URL (string: "http://www.hangge.com/music.mp3" ) playerItem = (url: url!) player = AVPlayer (playerItem: playerItem!) //设置进度条相关属性 duration : CMTime = playerItem!.asset.duration seconds : float64 = CMTimeGetSeconds (duration) playbackSlIDer!.minimumValue = 0 playbackSlIDer!.maximumValue = float (seconds) playbackSlIDer!.isContinuous = false //播放过程中动态改变进度条值和时间标签 player!.addPeriodicTimeObserver(forInterval: CMTimeMakeWithSeconds (1,1), queue: dispatchQueue .main) { ( @H_403_504@) -> VoID in if self .player!.currentItem?.status == .readytoplay { //更新进度条进度值 currentTime = @H_403_504@( .player!.currentTime()) .playbackSlIDer!.value = float (currentTime) //一个小算法,来实现00:00这种格式的播放时间 all: Int = (currentTime) m: =all % 60 f: (all/60) time: String = "" if f<10{ @H_419_574@time= "0\(f):" } else { "\(f)" } m<10{ time+= "0\(m)" { "\(m)" } //更新播放时间 .playTime!.text=time } } } //播放按钮点击 @IBAction playbuttonTapped(_ sender: Any ) { //根据rate属性判断当天是否在播放 player?.rate == 0 { player!.play() playbutton.setTitle( "暂停" , for : .normal) { player!.pause() "播放" : .normal) } } //拖动进度条改变值时触发 playbackSlIDerValueChanged(_ sender: @H_403_504@) { Int64 Int64 (playbackSlIDer.value) targetTime: CMTimeMake (seconds,1) //播放器定位到对应的位置 player!.seek(to: targetTime) //如果当前时暂停状态,则自动播放 player!.rate == 0 { player?.play() : .normal) } } //页面显示时添加歌曲播放结束通知监听 vIEwWillAppear(_ animated: Bool ) { NotificationCenter . default .addobserver( NSNotification . name AVPlayerItemDidplayToEndTime ) { .removeObserver( ) } //歌曲播放完毕 finishedplaying(myNotification: NSNotification ) { print ( "播放完毕!" ) stopedplayerItem: AVPlayerItem = myNotification.object as ! AVPlayerItem stopedplayerItem.seek(to: kCMTimeZero) } dIDReceiveMemoryWarning() { .dIDReceiveMemoryWarning() } } |
原文出自: www.hangge.com 转载请保留原文链接: http://www.hangge.com/blog/cache/detail_1668.html 总结
以上是内存溢出为你收集整理的Swift - 使用AVPlayer制作一个音乐播放器1(带播放时间和播放进度)全部内容,希望文章能够帮你解决Swift - 使用AVPlayer制作一个音乐播放器1(带播放时间和播放进度)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)