iOS上除了一些第三方的播放器之外,我們一般常用的播放方式有使用:
成都創(chuàng)新互聯公司專業(yè)為企業(yè)提供晉寧網站建設、晉寧做網站、晉寧網站設計、晉寧網站制作等企業(yè)網站建設、網頁設計與制作、晉寧企業(yè)網站模板建站服務,10多年晉寧做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
一般簡單的播放url可以使用網頁播放的模式,有很多主流app的視頻打開都是用的這種。不需要UI自定義的時候我們選擇AVPlayerViewController,比較方便快捷。自定義需求較多時最好選用AVPlayer。
功能最全、自定義最高的播放器,也是使用最多得。使用起來較為復雜些。需導入AVKit控件
AVPlayer功能比較多,另外寫了一篇文章:
AVPlayer播放器
只是讓視頻播放起來,沒有暫停、停止、快進等等功能。
適用于簡單的播放,不需要過多自定義的東西,使用比較簡單,有兩種方式,需要引入AVKit框架
(1)添加view
可以設置播放器的大小
(2)作為視圖控制器彈窗
使用起來類似AVPlayerViewController的第一種方式。需要引入MediaPlayer框架(iOS9后被拋棄,使用AVPlayerViewController即可)
通知來進行一些操作的監(jiān)聽
使用起來類似AVPlayerViewController的第二種方式。需要引入MediaPlayer框架(iOS9后被拋棄,使用AVPlayerViewController即可)
swift視頻播放器使用
最近工作之余, 寫了一個視頻播放器,輸入要播放的視頻資源地址,即可實現播放功能。
目前功能比較簡單,支持鎖屏、屏幕旋轉等基礎功能,后續(xù)會繼續(xù)完善。。。
下面講解下實現思路:
因 MediaPlayer/MediaPlayer.h 中 MPMoviePlayerController MP_DEPRECATED("Use AVPlayerViewController in AVKit.", ios(2.0, 9.0)) 在iOS9以后已經廢棄,為了更好的兼容性,采用了 AVFoundation/AVFoundation.h 為技術實現方案。
框架在此就不講解了,官網講的比較清楚,不懂的可以查看官檔。 - 戳這里
監(jiān)聽視頻資源的加載狀態(tài), 根據不同的狀態(tài)進行相應的操作。
更新視頻資源的播放進度。
實現控制視圖 QYPlayerControlView 的Delegate。 當控制視圖進行了相應操作,事件被傳遞到該類中進行統一處理。
該類中還有對操作視圖 顯示/隱藏 的方法。
后續(xù)調整視頻亮度、音量、進度等手勢都需添加在該分類中,便于統一管理。
主要存放時間轉換的分類 NSString+Custom 、常用宏 QYPlayerDefine 等工具類。
1). BaseViewController 中實現了控制屏幕旋轉的系統方法,實現的控制器要繼承自 BaseViewController 。
2). 在子控制器中實現如下方法。
此時屏幕旋轉功能已經添加成功!
以上便是整個播放器的源碼解析,具體的細節(jié)請查看源碼。
源碼放在GitHub上了,想查看的小伙伴可以 -戳這里。
千里之行,始于足下。
一、簡單介紹
簡單來說,音頻可以分為2種
(1)音效
又稱“短音頻”,通常在程序中的播放時長為1~2秒
在應用程序中起到點綴效果,提升整體用戶體驗
(2)音樂
比如游戲中的“背景音樂”,一般播放時間較長
框架:播放音頻需要用到AVFoundation.framework框架
二、音效的播放
1.獲得音效文件的路徑
復制代碼 代碼如下:
NSURL *url = [[NSBundle mainBundle] URLForResource:@"m_03.wav" withExtension:nil];
2.加載音效文件,得到對應的音效ID
復制代碼 代碼如下:
SystemSoundID soundID = 0;
AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), soundID);
3.播放音效
復制代碼 代碼如下:
AudioServicesPlaySystemSound(soundID);
注意:音效文件只需要加載1次
4.音效播放常見函數總結
加載音效文件
復制代碼 代碼如下:
AudioServicesCreateSystemSoundID(CFURLRef inFileURL, SystemSoundID *outSystemSoundID)
釋放音效資源
復制代碼 代碼如下:
AudioServicesDisposeSystemSoundID(SystemSoundID inSystemSoundID)
播放音效
復制代碼 代碼如下:
AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID)
播放音效帶點震動
復制代碼 代碼如下:
AudioServicesPlayAlertSound(SystemSoundID inSystemSoundID)
三、程序示例
先導入需要依賴的框架
導入需要播放的音效文件素材
說明:AVFoundation.framework框架中的東西轉換為CF需要使用橋接。
代碼示例:
復制代碼 代碼如下:
YYViewController.m文件
//
// YYViewController.m
// 14-音效播放
//
// Created by apple on 14-8-8.
// Copyright (c) 2014年 yangyong. All rights reserved.
//
#import "YYViewController.h"
#import
@interface YYViewController ()
@end
復制代碼 代碼如下:
@implementation YYViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//1.獲得音效文件的全路徑
NSURL *url=[[NSBundle mainBundle]URLForResource:@"buyao.wav" withExtension:nil];
//2.加載音效文件,創(chuàng)建音效ID(SoundID,一個ID對應一個音效文件)
SystemSoundID soundID=0;
AudioServicesCreateSystemSoundID((__bridge CFURLRef)url, soundID);
//把需要銷毀的音效文件的ID傳遞給它既可銷毀
//AudioServicesDisposeSystemSoundID(soundID);
//3.播放音效文件
//下面的兩個函數都可以用來播放音效文件,第一個函數伴隨有震動效果
AudioServicesPlayAlertSound(soundID);
//AudioServicesPlaySystemSound(#systemsoundid)
}
@end
說明:點擊屏幕可以播放音效文件。
音樂的播放
一、簡單說明
音樂播放用到一個叫做AVAudioPlayer的`類,這個類可以用于播放手機本地的音樂文件。
注意:
(1)該類(AVAudioPlayer)只能用于播放本地音頻。
(2)時間比較短的(稱之為音效)使用AudioServicesCreateSystemSoundID來創(chuàng)建,而本地時間較長(稱之為音樂)使用AVAudioPlayer類。
二、代碼示例
AVAudioPlayer類依賴于AVFoundation框架,因此使用該類必須先導入AVFoundation框架,并包含其頭文件(包含主頭文件即可)。
導入必要的,需要播放的音頻文件到項目中。
代碼示例:
復制代碼 代碼如下:
//
// YYViewController.m
// 15-播放音樂
//
#import "YYViewController.h"
#import
@interface YYViewController ()
@end
復制代碼 代碼如下:
@implementation YYViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//1.音頻文件的url路徑
NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil];
//2.創(chuàng)建播放器(注意:一個AVAudioPlayer只能播放一個url)
AVAudioPlayer *audioPlayer=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil];
//3.緩沖
[audioPlayer prepareToPlay];
//4.播放
[audioPlayer play];
}
@end
代碼說明:運行程序,點擊模擬器界面,卻并沒有能夠播放音頻文件,原因是代碼中創(chuàng)建的AVAudioPlayer播放器是一個局部變量,應該調整為全局屬性。
可將代碼調整如下,即可播放音頻:
復制代碼 代碼如下:
#import "YYViewController.h"
#import
@interface YYViewController ()
@property(nonatomic,strong)AVAudioPlayer *audioplayer;
@end
復制代碼 代碼如下:
@implementation YYViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//1.音頻文件的url路徑
NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil];
//2.創(chuàng)建播放器(注意:一個AVAudioPlayer只能播放一個url)
self.audioplayer=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil];
//3.緩沖
[self.audioplayer prepareToPlay];
//4.播放
[self.audioplayer play];
}
@end
注意:一個AVAudioPlayer只能播放一個url,如果想要播放多個文件,那么就得創(chuàng)建多個播放器。
三、相關說明
新建一個項目,在storyboard中放三個按鈕,分別用來控制音樂的播放、暫停和停止。
程序代碼如下:
復制代碼 代碼如下:
#import "YYViewController.h"
#import
@interface YYViewController ()
@property(nonatomic,strong)AVAudioPlayer *player;
- (IBAction)play;
- (IBAction)pause;
- (IBAction)stop;
@end
@implementation YYViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//1.音頻文件的url路徑
NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil];
//2.創(chuàng)建播放器(注意:一個AVAudioPlayer只能播放一個url)
self.player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil];
//3.緩沖
[self.player prepareToPlay];
}
- (IBAction)play {
//開始播放/繼續(xù)播放
[self.player play];
}
- (IBAction)pause {
//暫停
[self.player pause];
}
- (IBAction)stop {
//停止
//注意:如果點擊了stop,那么一定要讓播放器重新創(chuàng)建,否則會出現一些莫名其面的問題
[self.player stop];
}
@end
注意:如果點了“停止”,那么一定要播放器重新創(chuàng)建,不然的話會出現莫名其妙的問題。
點擊了stop之后,播放器實際上就不能再繼續(xù)使用了,如果還繼續(xù)使用,那么后續(xù)的一些東西會無法控制。
推薦代碼:
復制代碼 代碼如下:
#import "YYViewController.h"
#import
@interface YYViewController ()
@property(nonatomic,strong)AVAudioPlayer *player;
- (IBAction)play;
- (IBAction)pause;
- (IBAction)stop;
@end
復制代碼 代碼如下:
@implementation YYViewController
#pragma mark-懶加載
-(AVAudioPlayer *)player
{
if (_player==Nil) {
//1.音頻文件的url路徑
NSURL *url=[[NSBundle mainBundle]URLForResource:@"235319.mp3" withExtension:Nil];
//2.創(chuàng)建播放器(注意:一個AVAudioPlayer只能播放一個url)
self.player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:Nil];
//3.緩沖
[self.player prepareToPlay];
}
return _player;
}
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (IBAction)play {
//開始播放/繼續(xù)播放
[self.player play];
}
- (IBAction)pause {
//暫停
[self.player pause];
}
- (IBAction)stop {
//停止
//注意:如果點擊了stop,那么一定要讓播放器重新創(chuàng)建,否則會出現一些莫名其面的問題
[self.player stop];
self.player=Nil;
}
@end
四、播放多個文件
點擊,url,按住common建查看。
可以發(fā)現,這個url是只讀的,因此只能通過initWithContentsOfUrl的方式進行設置,也就意味著一個播放器對象只能播放一個音頻文件。
那么如何實現播放多個音頻文件呢?
可以考慮封裝一個播放音樂的工具類,下一篇文章將會介紹具體怎么實現。
當前題目:ios開發(fā)播放器,播放器 ios
文章轉載:http://sd-ha.com/article16/dsippgg.html
成都網站建設公司_創(chuàng)新互聯,為您提供外貿網站建設、全網營銷推廣、網站排名、做網站、網頁設計公司、虛擬主機
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯