一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - 淺析iOS中視頻播放的幾種方案

淺析iOS中視頻播放的幾種方案

2021-01-24 15:11wg_hjl IOS

還記得剛學iOS的時候嗎?那個時候驚訝于各種牛逼的功能只需要幾句簡單的代碼就可以完成。視頻播放也是這樣,IOS中視頻播放有好幾種方式,這篇文章就給大家整理這幾種方案優(yōu)缺點與實現過程。

1、AVPlayer

(1) 優(yōu)缺點

優(yōu)點:可以自定義 UI, 進行控制

缺點:單純的播放,沒有控制 UI(進度,暫停,播放等按鈕),而且如果要顯示播放界面, 需要借助AVPlayerLayer, 添加圖層到需要展示的圖層上

(2)實現遠程視頻播放

實現播放功能(只有聲音)

1.導入框架

?
1
#import <AVFoundation/AVFoundation.h>

2.通過遠程 URL 創(chuàng)建 AVPlayer 對象

?
1
2
NSURL *remoteURL = [NSURL URLWithString:@"http://v1.mukewang.com/57de8272-38a2-4cae-b734-ac55ab528aa8/L.mp4"];
 _player = [AVPlayer playerWithURL:remoteURL];

3.開始播放

?
1
[self.player play];

存在問題:只能播放聲音, 看不到圖像

解決方案: 需要借助AVPlayerLayer對象, 根據player創(chuàng)建圖層, 添加到視圖上

顯示視頻

4.根據 player 對象創(chuàng)建 AVPlayerLayer

?
1
AVPlayerLayer *layer = [AVPlayerLayer playerLayerWithPlayer:self.player];

5.設置 layer 的 frame

?
1
layer.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height * 9 / 16);

6.將layer 添加到需要展示的 View 的 layer 上

?
1
[self.view.layer addSublayer:layer];

2、MPMoviePlayerController

(1)優(yōu)缺點

優(yōu)點:自帶的播放控制UI(進度條,上一個,下一個,暫停), 不需要手動添加

缺點:不能自定義UI

        只能將此控制器視圖添加到其他視圖進行展示

        此控制器不是視圖控制器, 不能直接彈出

        播放器的播放狀態(tài), 是通過通知的方式告訴外界

(2)視頻播放實現步驟

1.導入框架

?
1
#import <MediaPlayer/MediaPlayer.h>

2.根據URL, 創(chuàng)建控制器 MPMoviePlayerController

?
1
2
NSURL *remoteURL = [NSURL URLWithString:@"http://v1.mukewang.com/57de8272-38a2-4cae-b734-ac55ab528aa8/L.mp4"];
 _moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:remoteURL];

3.設置播放視圖frame, 添加到需要展示的視圖上

?
1
2
3
4
5
6
// 設置播放視圖的frame
self.moviePlayer.view.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height * 9 / 16);
// 設置播放視圖控制樣式
self.moviePlayer.controlStyle = MPMovieControlStyleFullscreen;
// 添加播放視圖到要顯示的視圖
[self.view addSubview:self.moviePlayer.view];

4.播放

?
1
[self.moviePlayer play];

3、MPMoviePlayerViewController

(1)優(yōu)缺點

優(yōu)點:自帶的播放控制UI, 不需要手動添加

       此控制器是視圖控制器, 可以彈出, 可以壓棧

       也可以手動調整視圖大小, 添加到其他視圖上

缺點:不能自定義UI

(2)視頻播放實現步驟

1.導入框架

?
1
#import <MediaPlayer/MediaPlayer.h>

2.根據URL, 創(chuàng)建控制器 MPMoviePlayerViewController

?
1
2
NSURL *remoteURL = [NSURL URLWithString:@"http://v1.mukewang.com/57de8272-38a2-4cae-b734-ac55ab528aa8/L.mp4"];
 _playerVC = [[MPMoviePlayerViewController alloc] initWithContentURL:remoteURL];

3.直接模態(tài)彈出該控制器(或者: 設置播放視圖frame, 添加到需要展示的視圖上)

?
1
2
3
[self presentViewController:self.playerVC animated:YES completion:^{
   [self.playerVC.moviePlayer play];
 }];

4.播放

?
1
[self.playerVC.moviePlayer play];

4、針對于第2種和第3種實現方案, 在iOS9.0之后, 統一使用AVPlayerViewController

(1)優(yōu)缺點

優(yōu)點:自帶的播放控制UI, 不需要手動添加

        此控制器是視圖控制器, 可以彈出, 可以壓棧 

       也可以手動調整視圖大小, 添加到其他視圖上

缺點:不能自定義UI

(2)視頻播放實現步驟

1.導入框架

?
1
2
#import <AVFoundation/AVFoundation.h>
#import <AVKit/AVKit.h>

2.根據URL創(chuàng)建AVPlayer

?
1
2
NSURL *remoteUrl = [NSURL URLWithString:@"http://v1.mukewang.com/57de8272-38a2-4cae-b734-ac55ab528aa8/L.mp4"];
AVPlayer *player = [AVPlayer playerWithURL:remoteUrl];

3.根據AVPlayer, 創(chuàng)建AVPlayerViewController控制器  

?
1
2
_playerVc = [[AVPlayerViewController alloc] init];
_playerVc.player = player;

4.設置播放視圖frame, 添加到需要展示的視圖上

?
1
2
self.playerVc.view.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height * 9 / 16);
[self.view addSubview:self.playerVc.view];

5.播放

?
1
[self.playerVc.player play];

步驟4和步驟5的合并:

?
1
[self presentViewController:self.playerVc animated:YES completion:nil];

總結

以上就是關于iOS中視頻播放的全部內容,希望本文的內容對大家學習或者開發(fā)IOS能有所幫助。

原文鏈接:http://www.jianshu.com/p/b2c9e1e5a642

延伸 · 閱讀

精彩推薦
  • IOSiOS開發(fā)技巧之狀態(tài)欄字體顏色的設置方法

    iOS開發(fā)技巧之狀態(tài)欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態(tài)欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發(fā)技巧之狀態(tài)欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOSiOS開發(fā)之視圖切換

    iOS開發(fā)之視圖切換

    在iOS開發(fā)中視圖的切換是很頻繁的,獨立的視圖應用在實際開發(fā)過程中并不常見,除非你的應用足夠簡單。在iOS開發(fā)中常用的視圖切換有三種,今天我們將...

    執(zhí)著丶執(zhí)念5282021-01-16
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發(fā)過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111312021-03-15
主站蜘蛛池模板: 九九99九九精彩网站 | 亚洲第一天堂网 | 日本九九热| 亚洲国产精品二区久久 | 欧美日韩1区2区 | 成人免费观看在线视频 | 97久久精品午夜一区二区 | 欧美在线高清 | 欧美一级专区免费大片 | 国产成人一区二区三区 | 精品一区二区三区在线播放 | 亚洲国产美女精品久久久久 | 欧美一卡二卡科技有限公司 | 国产综合成色在线视频 | 国产男技师 | 国产视频一区二 | 无码精品一区二区三区免费视频 | 国产自一区 | 国产精品制服丝袜白丝www | 国产欧美一区二区三区久久 | 成人免费视屏 | 亚洲 无码 制服 日韩 | 日韩亚洲欧美综合一区二区三区 | 成人观看免费大片在线观看 | 91你懂的| 三极片在线观看 | 国内自拍网红在线综合 | 香蕉免费一区二区三区 | 国产高清好大好夹受不了了 | 手机av | 国产欧美日韩高清专区ho | 九九免费高清在线观看视频 | 欧美free激情野战hd | 国产精品第四页 | 99久久综合久中文字幕 | 91亚色视频在线观看 | 四虎小视频 | 日本黄色录像视频 | 手机看片自拍自自拍日韩免费 | 99久久国产综合精品网成人影院 | 爱福利视频一区二区 |