Swift - 歌曲播放样例(附带播放时间和播放进度)
使用MPMoviePlayerController我们可以是进行音乐播放,下面是一个播放器样例。同时,播放时还可以显示播放时间和播放进度。
|
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
|
import UIKitimport MediaPlayerclass ViewController: UIViewController { //申明一个媒体播放控件 var audioPlayer:MPMoviePlayerController=MPMoviePlayerController(); //申明一个计时器 var timer:NSTimer? //ProgressView控件 播放进度条 @IBOutlet weak var progressView: UIProgressView! //Label控件 播放时间 @IBOutlet weak var playTime: UILabel! override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } //播放歌曲 func onSetAudio(url:String){ //暂停当前歌曲的播放 self.audioPlayer.stop() //获取歌曲文件 self.audioPlayer.contentURL=NSURL(string:url) //播放歌曲 self.audioPlayer.play() //先停掉计时器 timer?.invalidate() //将计时器归零 playTime!.text="00:00" //开启计时器 timer=NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: "onUpdate", userInfo: nil, repeats: true) } //计时器更新方法 func onUpdate(){ //返回播放器当前的播放时间 let c=audioPlayer.currentPlaybackTime if c>0.0 { //歌曲的总时间 let t=audioPlayer.duration //歌曲播放的百分比 let p:CFloat=CFloat(c/t) //通过百分比设置进度条 progressView!.setProgress(p, animated: true) //一个小算法,来实现00:00这种格式的播放时间 let all:Int=Int(c) let m:Int=all % 60 let f:Int=Int(all/60) var time:String="" if f<10{ time="0\(f):" }else { time="\(f)" } if m<10{ time+="0\(m)" }else { time+="\(m)" } //更新播放时间 playTime!.text=time } }} |
Swift - 歌曲播放样例(附带播放时间和播放进度)的更多相关文章
- 实现php获取mp3文件元信息如播放时间歌曲作者等
最近收集到一个php获取mp3文件元信息的类,感觉比较方便.现在分享给大家! 下面是使用方式和测试方式: <?php include_once 'mp3file.class.php'; func ...
- GStreamer基础教程05 - 播放时间控制
简介 在多媒体应用中,我们通常需要查询媒体文件的总时间.当前播放位置,以及跳转到指定的时间点.GStreamer提供了相应的接口来实现此功能,在本文中,我们将通过示例了解如何查询时间信息,以及如何进行 ...
- HTTP协议下可拖动时间轴播放FLV的实现(伪流媒体)
HTTP协议下实现FLV的播放其实并不复杂,当初实现的原理是使用了flowPlayer插件实现的,效果还不错.但仍有两大问题影响着客户的访问情绪: 1.预加载时页面卡死,似乎没有边下边播. 2.偶尔边 ...
- 在Swift中实现单例方法
在写Swift的单例方法之前可以温习一下Objective-C中单例的写法: + (instancetype)sharedSingleton{ static id instance; static d ...
- 28.怎样在Swift中实现单例?
1.回忆一下OC中的单例实现 //AFNetworkReachabilityManager中的单例,省略了其他代码 @interface AFNetworkReachabilityManager : ...
- MPEG简介 + 如何计算CBR 和VBR的MP3的播放时间
1. 声明本文所写内容,多数整理自互联网,版权归原作者所有笔者知识有限,文中难免有误,欢迎批评指正,admin (at) crifan.com觉得此文对你有帮助,想要发邮件来感谢的,也欢迎哈,^_^欢 ...
- 【HTML5】HTML5中video元素事件详解(实时监测当前播放时间)
html 代码..video后边几个元素,可处理ios 系统的兼容性 <video id="myVideo" controls="controls" po ...
- js获取播放器播放时间和停止播放
html代码 <video id="myVideo" class="video-active" width="100%" height ...
- (jsp/html)网页上嵌入播放器(常用播放器代码整理) http://www.jb51.net/article/37267.htm
网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助 这个其实很简单,只要在HTML上添加以上代码就O ...
随机推荐
- Uniconnection 连 mysql 有时会断线的
你定义localfailover:=ture.断线后会自己接上 firedac没这种功能.只有unidac有
- ASP.NET MVC 5 学习教程:添加验证
原文 ASP.NET MVC 5 学习教程:添加验证 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控 ...
- 期权put和call
今天和朋友谈到了FB的期权操作问题,保证一个固定收益或者得到一个以低价买入FB的机会. 首先说下基本概念:call:是指买权put :是指卖权但是这两种期权又分别对应了long和short的两种操作, ...
- Android大放送干:书籍、过程、工具等各种全
完全干燥分享,本文收集Android制定必要的书籍.过程.具.新闻和杂志各种资源.它们能让你在Android开发之旅的各个阶段都受益. 入门 <Learning Android(中文版)> ...
- Windows API获取系统配置文件的配置参数
在Windows平台下获取系统配置文件(如:System.ini)的配置参数. 系统配置文件System.ini的内容如下: [SYSTEM] ServiceIP = 10.128.11.99:600 ...
- Android学习笔记之View(二)
View加载的流程之测量:rootView调用measure()→onMeasure(): measure()是final方法,表明Android不想让开发者去修改measure的框架,开发者可以on ...
- 搭建OA平台
公司没有OA平台的原因是: 1.暂时没有上的必要. 2.总厂有一个web版的用友的OA. 但最近法方总经理提到了共享日历日程的需求. 这个需求的主要要整合的是把outlook的日历功能共享.原来微软是 ...
- Android项目使用Assets下的文件
Android项目在编译时,Assets下文件不被编译. Assets下的文件除了 html文件可以直接在项目中使用外,其他的文件都需要做处理滴. 在项目中使用方法: 使用流读取. ...
- iOS设计模式:观察者
摘自:http://www.cocoachina.com/applenews/devnews/2013/0506/6132.html 什么是观察者模式什么是观察者模式?你曾经订阅过报纸吗?在订阅报纸的 ...
- @(报错)could not find the main class, Program will exit(已解决)
原文 @(报错)could not find the main class, Program will exit(已解决) (很抱歉,如果你希望能更加清楚地看清图片或是图上的文字的话,你可以 ...