Swift - 使用AVPlayer制作一个音乐播放器1(带播放时间和播放进度)

Swift - 使用AVPlayer制作一个音乐播放器1(带播放时间和播放进度),第1张

概述过去我们可以使用  Media Player 框架  MPMoviePlayerController 来播放视频、音频。但自  iOS9.0 起,这个便被废除。取而代之的便是  AVFoundation 框架的  AVPlayer。 1,AVPlayer介绍 (1) AVPlayer 可以用来播放视频,也可以播放任何  iOS 支持的音频。 (2) AVPlayer 既可以播放本地音频,可以播放网 过去我们可以使用 Media Player框架 MPMovIEPlayerController来播放视频、音频。但自 iOS9.0起,这个便被废除。取而代之的便是 AVFoundation框架的 AVPlayer
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() } }
源码下载: hangge_1668.zip
原文出自: www.hangge.com 转载请保留原文链接: http://www.hangge.com/blog/cache/detail_1668.html 总结

以上是内存溢出为你收集整理的Swift - 使用AVPlayer制作一个音乐播放器1(带播放时间和播放进度)全部内容,希望文章能够帮你解决Swift - 使用AVPlayer制作一个音乐播放器1(带播放时间和播放进度)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1062133.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存