播放远程视频

作者: Z了个L | 来源:发表于2016-04-22 00:26 被阅读261次
  • 使用AVPlayer 播放远程视频

  • ViewController


// ViewController.h
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@end

// ViewController.m
#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface ViewController ()
/** 播放器 */
@property (nonatomic, strong) AVPlayer *player;
/** 图层*/
@property (nonatomic, weak) AVPlayerLayer *layer;
@end

@implementation ViewController

#pragma mark - 懒加载
- (AVPlayerLayer *)layer
{
    if (_layer == nil) {
        // 获取远程视频资源
        // 0.获取远程视频url
        NSURL *remoteURL = [NSURL URLWithString:@"http://v1.mukewang.com/57de8272-38a2-4cae-b734-ac55ab528aa8/L.mp4"];
        // 1.根据url资源创建一个播放器
        self.player = [[AVPlayer alloc] initWithURL:remoteURL];
        // 2.根据播放器对象, 创建一个图层, 展示视频内容给用户看
        _layer = [AVPlayerLayer playerLayerWithPlayer:self.player];
    }
    return _layer;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.view.layer addSublayer:self.layer];
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    [self.player play];
}

// 不加下面的方法,虽然可以放视频,可以听到声音
// 但是不能看到画面,得添加到相应的图层上去
- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    self.layer.frame = self.view.bounds;
}

@end

  • 使用MPMoviePlayerViewController播放视频

  • ViewController


// ViewController.h
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@end

// ViewController.m
#import "ViewController.h"
#import <MediaPlayer/MediaPlayer.h>

@interface ViewController ()

/** 播放器*/
@property (nonatomic, strong) MPMoviePlayerController *pc;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    // 0.获取资源路径
    NSURL *remoteURL = [NSURL URLWithString:@"http://v1.mukewang.com/57de8272-38a2-4cae-b734-ac55ab528aa8/L.mp4"];
    // 1.创建播放器对象
    self.pc = [[MPMoviePlayerController alloc] initWithContentURL:remoteURL];
    [self.view addSubview:self.pc.view];
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    [self.pc play];
}

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    self.pc.view.frame = self.view.bounds;
}

@end

  • 使用MPMoviePlayerViewController播放视频

  • ViewController


// ViewController.h
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@end

// ViewController.m
#import "ViewController.h"
#import <MediaPlayer/MediaPlayer.h>

@interface ViewController ()
/** 播放器 */
@property (nonatomic ,strong) MPMoviePlayerViewController *pvc;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // 0.获取远程视频url
    NSURL *remoteURL = [NSURL URLWithString:@"http://v1.mukewang.com/57de8272-38a2-4cae-b734-ac55ab528aa8/L.mp4"];
    self.pvc = [[MPMoviePlayerViewController alloc] initWithContentURL:remoteURL];
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    if (self.presentedViewController) { // 已经有指向的控制器了
        return;
    }

    [self presentViewController:self.pvc animated:YES completion:^{
        [self.pvc.moviePlayer play];
    }];
}

@end

  • iOS9.0之后, 需要使用AVPlayerViewController

  • ViewController


// ViewController.h
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@end

// ViewController.m
#import "ViewController.h"
#import <AVKit/AVKit.h>
#import <AVFoundation/AVFoundation.h>

@interface ViewController ()
/** 播放器 */
@property (nonatomic ,strong) AVPlayerViewController *playerVC;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.playerVC = [[AVPlayerViewController alloc] init];
    // 0.获取远程视频url
    NSURL *remoteURL = [NSURL URLWithString:@"http://v1.mukewang.com/57de8272-38a2-4cae-b734-ac55ab528aa8/L.mp4"];
    AVPlayer *player = [[AVPlayer alloc] initWithURL:remoteURL];
    self.playerVC.player = player;
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    if (self.presentedViewController) { // 已经有指向的控制器
        return;
    }
    [self presentViewController:self.playerVC animated:YES completion:^{
        [self.playerVC.player play];
    }];
}

@end


相关文章

  • 播放远程视频

    使用AVPlayer 播放远程视频 ViewController 使用MPMoviePlayerViewContr...

  • 播放音频

    AVAudioplayer ->只能播放本地音乐AVPlayer ->(本地音乐.远程音乐,本地视频,远程视频) ...

  • MPMoviePlayerController播放远程视频

    使用AVPlayer默认是不带下方工具条的,而这个MPMoviePlayerController默认就自带了工具条...

  • AVPlayer播放远程视频

    导入头文件 播放器属性 播放器的懒加载 点击屏幕开始播放 注意,想要实现类似播放器的进度控制,点击全屏等需要自己基...

  • iOS视频播放的四种方案

    1 AVPlayer (1) 优缺点 (2)实现远程视频播放 实现播放功能(只有声音) 显示视频 2 MPMovi...

  • iOS - 视频播放AVPlayer

    远程视频播放 单纯的播放, 没有控制UI, 而且如果要显示播放界面, 需要借助AVPlayerLayer, 添加图...

  • iOS开发-视频播放

    视频播放 1> AVPlayer能播放本地、远程的音频、视频文件基于Layer显示,得自己去编写控制面板 2> M...

  • 浏览器audio、video相关

    音频、视频常用属性 airplay远程播放功能x-webkit-airplay="true"airplay="al...

  • iOS 视频开发 只聊坑

    1.Android拍摄的视频无法在IOS播放统一mp4格式,并且音频编码设置为AAC2.远程视频无法截图播放无法截...

  • 【iOS 开发】同步快速判断视频是否可以播放

    背景 拿到一个视频的 url 地址(无论是远程还是本地),有时候在播放之前需要检测该视频是否可以播放(本地可能是文...

网友评论

    本文标题:播放远程视频

    本文链接:https://www.haomeiwen.com/subject/vzztrttx.html