無標題文章

在iOS中播放視頻可以使用MediaPlayer.framework種的MPMoviePlayerController類來完成叔营,它支持本地視頻和網絡視頻播放。這個類實現了MPMediaPlayback協(xié)議甘耿,因此具備一般的播放器控制功能,例如播放工闺、暫停效拭、停止等。但是MPMediaPlayerController自身并不是一個完整的視圖控制器浑度,如果要在UI中展示視頻需要將view屬性添加到界面中寇窑。下面列出了MPMoviePlayerController的常用屬性和方法:

屬性

說明

@property (nonatomic, copy) NSURL *contentURL

播放媒體URL,這個URL可以是本地路徑箩张,也可以是網絡路徑

@property (nonatomic, readonly) UIView *view

播放器視圖甩骏,如果要顯示視頻必須將此視圖添加到控制器視圖中

@property (nonatomic, readonly) UIView *backgroundView

播放器背景視圖

@property (nonatomic, readonly) MPMoviePlaybackState playbackState

媒體播放狀態(tài)完残,枚舉類型:

MPMoviePlaybackStateStopped:停止播放

MPMoviePlaybackStatePlaying:正在播放

MPMoviePlaybackStatePaused:暫停

MPMoviePlaybackStateInterrupted:中斷

MPMoviePlaybackStateSeekingForward:向前定位

MPMoviePlaybackStateSeekingBackward:向后定位

@property (nonatomic, readonly) MPMovieLoadState loadState

網絡媒體加載狀態(tài),枚舉類型:

MPMovieLoadStateUnknown:位置類型

MPMovieLoadStatePlayable:

MPMovieLoadStatePlaythroughOK:這種狀態(tài)如果shouldAutoPlay為YES將自動播放

MPMovieLoadStateStalled:停滯狀態(tài)

@property (nonatomic) MPMovieControlStyle controlStyle

控制面板風格横漏,枚舉類型:

MPMovieControlStyleNone:無控制面板

MPMovieControlStyleEmbedded:嵌入視頻風格

MPMovieControlStyleFullscreen:全屏

MPMovieControlStyleDefault:默認風格

@property (nonatomic) MPMovieRepeatMode repeatMode;

重復播放模式,枚舉類型:

MPMovieRepeatModeNone:不重復熟掂,默認值

MPMovieRepeatModeOne:重復播放

@property (nonatomic) BOOL shouldAutoplay

當網絡媒體緩存到一定數據時是否自動播放缎浇,默認為YES

@property (nonatomic, getter=isFullscreen) BOOL fullscreen

是否全屏展示,默認為NO赴肚,注意如果要通過此屬性設置全屏必須在視圖顯示完成后設置素跺,否則無效

@property (nonatomic) MPMovieScalingMode scalingMode

視頻縮放填充模式,枚舉類型:

MPMovieScalingModeNone:不進行任何縮放

MPMovieScalingModeAspectFit:固定縮放比例并且盡量全部展示視頻誉券,不會裁切視頻

MPMovieScalingModeAspectFill:固定縮放比例并填充滿整個視圖展示指厌,可能會裁切視頻

MPMovieScalingModeFill:不固定縮放比例壓縮填充整個視圖,視頻不會被裁切但是比例失衡

@property (nonatomic, readonly) BOOL readyForDisplay

是否有相關媒體被播放

@property (nonatomic, readonly) MPMovieMediaTypeMask movieMediaTypes

媒體類別踊跟,枚舉類型:

MPMovieMediaTypeMaskNone:未知類型

MPMovieMediaTypeMaskVideo:視頻

MPMovieMediaTypeMaskAudio:音頻

@property (nonatomic) MPMovieSourceType movieSourceType

媒體源踩验,枚舉類型:

MPMovieSourceTypeUnknown:未知來源

MPMovieSourceTypeFile:本地文件

MPMovieSourceTypeStreaming:流媒體(直播或點播)

@property (nonatomic, readonly) NSTimeInterval duration

媒體時長,如果未知則返回0

@property (nonatomic, readonly) NSTimeInterval playableDuration

媒體可播放時長商玫,主要用于表示網絡媒體已下載視頻時長

@property (nonatomic, readonly) CGSize naturalSize

視頻實際尺寸箕憾,如果未知則返回CGSizeZero

@property (nonatomic) NSTimeInterval initialPlaybackTime

起始播放時間

@property (nonatomic) NSTimeInterval endPlaybackTime

終止播放時間

@property (nonatomic) BOOL allowsAirPlay

是否允許無線播放,默認為YES

@property (nonatomic, readonly, getter=isAirPlayVideoActive) BOOL airPlayVideoActive

當前媒體是否正在通過AirPlay播放

@property(nonatomic, readonly) BOOL isPreparedToPlay

是否準備好播放

@property(nonatomic) NSTimeInterval currentPlaybackTime

當前播放時間拳昌,單位:秒

@property(nonatomic) float currentPlaybackRate

當前播放速度袭异,如果暫停則為0,正常速度為1.0炬藤,非0數據表示倍率

對象方法

說明

- (instancetype)initWithContentURL:(NSURL *)url

使用指定的URL初始化媒體播放控制器對象

- (void)setFullscreen:(BOOL)fullscreen animated:(BOOL)animated

設置視頻全屏御铃,注意如果要通過此方法設置全屏則必須在其視圖顯示之后設置,否則無效

- (void)requestThumbnailImagesAtTimes:(NSArray *)playbackTimes timeOption:(MPMovieTimeOption)option

獲取在指定播放時間的視頻縮略圖沈矿,第一個參數是獲取縮略圖的時間點數組上真;第二個參數代表時間點精度,枚舉類型:

MPMovieTimeOptionNearestKeyFrame:時間點附近

MPMovieTimeOptionExact:準確時間

- (void)cancelAllThumbnailImageRequests

取消所有縮略圖獲取請求

- (void)prepareToPlay

準備播放细睡,加載視頻數據到緩存谷羞,當調用play方法時如果沒有準備好會自動調用此方法

- (void)play

開始播放

- (void)pause

暫停播放

- (void)stop

停止播放

- (void)beginSeekingForward

向前定位

- (void)beginSeekingBackward

向后定位

- (void)endSeeking

停止快進/快退

通知

說明

MPMoviePlayerScalingModeDidChangeNotification

視頻縮放填充模式發(fā)生改變

MPMoviePlayerPlaybackDidFinishNotification

媒體播放完成或用戶手動退出,具體完成原因可以通過通知userInfo中的key為MPMoviePlayerPlaybackDidFinishReasonUserInfoKey的對象獲取

MPMoviePlayerPlaybackStateDidChangeNotification

播放狀態(tài)改變溜徙,可配合playbakcState屬性獲取具體狀態(tài)

MPMoviePlayerLoadStateDidChangeNotification

媒體網絡加載狀態(tài)改變

MPMoviePlayerNowPlayingMovieDidChangeNotification

當前播放的媒體內容發(fā)生改變

MPMoviePlayerWillEnterFullscreenNotification

將要進入全屏

MPMoviePlayerDidEnterFullscreenNotification

進入全屏后

MPMoviePlayerWillExitFullscreenNotification

將要退出全屏

MPMoviePlayerDidExitFullscreenNotification

退出全屏后

MPMoviePlayerIsAirPlayVideoActiveDidChangeNotification

當媒體開始通過AirPlay播放或者結束AirPlay播放

MPMoviePlayerReadyForDisplayDidChangeNotification

視頻顯示狀態(tài)改變

MPMovieMediaTypesAvailableNotification

確定了媒體可用類型后

MPMovieSourceTypeAvailableNotification

確定了媒體來源后

MPMovieDurationAvailableNotification

確定了媒體播放時長后

MPMovieNaturalSizeAvailableNotification

確定了媒體的實際尺寸后

MPMoviePlayerThumbnailImageRequestDidFinishNotification

縮略圖請求完成之后

MPMediaPlaybackIsPreparedToPlayDidChangeNotification

做好播放準備后

注意MPMediaPlayerController的狀態(tài)等信息并不是通過代理來和外界交互的湃缎,而是通過通知中心,因此從上面的列表中可以看到常用的一些通知蠢壹。由于MPMoviePlayerController本身對于媒體播放做了深度的封裝嗓违,使用起來就相當簡單:創(chuàng)建MPMoviePlayerController對象,設置frame屬性图贸,將MPMoviePlayerController的view添加到控制器視圖中蹂季。

MPMoviePlayerViewController

其實MPMoviePlayerController如果不作為嵌入視頻來播放(例如在新聞中嵌入一個視頻)冕广,通常在播放時都是占滿一個屏幕的,特別是在iPhone偿洁、iTouch上撒汉。因此從iOS3.2以后蘋果也在思考既然MPMoviePlayerController在使用時通常都是將其視圖view添加到另外一個視圖控制器中作為子視圖,那么何不直接創(chuàng)建一個控制器視圖內部創(chuàng)建一個MPMoviePlayerController屬性并且默認全屏播放涕滋,開發(fā)者在開發(fā)的時候直接使用這個視圖控制器睬辐。這個內部有一個MPMoviePlayerController的視圖控制器就是MPMoviePlayerViewController,它繼承于UIViewController宾肺。MPMoviePlayerViewController內部多了一個moviePlayer屬性和一個帶有url的初始化方法溯饵,同時它內部實現了一些作為模態(tài)視圖展示所特有的功能,例如默認是全屏模式展示锨用、彈出后自動播放丰刊、作為模態(tài)窗口展示時如果點擊“Done”按鈕會自動退出模態(tài)窗口等。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末增拥,一起剝皮案震驚了整個濱河市啄巧,隨后出現的幾起案子,更是在濱河造成了極大的恐慌掌栅,老刑警劉巖棵帽,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異渣玲,居然都是意外死亡逗概,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人玖院,你說我怎么就攤上這事气笙。” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我星掰,道長,這世上最難降的妖魔是什么嫩舟? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任氢烘,我火速辦了婚禮,結果婚禮上家厌,老公的妹妹穿的比我還像新娘播玖。我一直安慰自己,他們只是感情好饭于,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布蜀踏。 她就那樣靜靜地躺著维蒙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪果覆。 梳的紋絲不亂的頭發(fā)上颅痊,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天,我揣著相機與錄音局待,去河邊找鬼八千。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的照皆。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼膜毁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了瘟滨?” 一聲冷哼從身側響起候醒,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎倒淫,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體敌土,經...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年运翼,在試婚紗的時候發(fā)現自己被綠了返干。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡血淌,死狀恐怖,靈堂內的尸體忽然破棺而出癌淮,到底是詐尸還是另有隱情,我是刑警寧澤该默,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布策彤,位于F島的核電站匣摘,受9級特大地震影響,放射性物質發(fā)生泄漏裹刮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一赠叼、第九天 我趴在偏房一處隱蔽的房頂上張望违霞。 院中可真熱鬧,春花似錦买鸽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽批旺。三九已至诵姜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間棚唆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工瑟俭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人失暴。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓微饥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親欠橘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內容