iOS 短视频源码开发MPMoviePlayerController

简介: 短视频源码

文:布谷惠泽/来源:山东布谷鸟网络

  MPMoviePlayerController用来播放视频,在iOS9之后被弃用(iOS9之后苹果推荐我们使用AVPlayer,AVPlayer相对复杂但灵活),由于APP往往要兼容iOS9之前的版本,所有MPMoviePlayerController还是很重要的。

在我的另一篇文章中分享了一个基于MPMoviePlayerController的播放器,大家可以看看,目前还不完整。小伙伴们可以关注一下我的简书。谢谢

MPMoviePlayerController的简单使用
需要添加这个框架MediaPlayer.framework
#import <MediaPlayer/MediaPlayer.h>
#pragma mark - 本地
    
    NSString* _moviePath=[[NSBundle mainBundle]pathForResource:@"popeye" ofType:@"mp4"];
    self.player=[[MPMoviePlayerController alloc]initWithContentURL:[NSURL fileURLWithPath:_moviePath]];
    [self.view addSubview:self.player.view];
    
    self.player.view.frame=CGRectMake(0, 0, self.view.frame.size.width, CGRectGetWidth(self.view.frame)*(9.0/16.0));
    self.player.movieSourceType = MPMovieSourceTypeFile;// 播放本地视频时需要这句
//    self.player.controlStyle = MPMovieControlStyleNone;// 不需要进度条
    self.player.shouldAutoplay = YES;// 是否自动播放(默认为YES)
//    self.player.scalingMode=MPMovieScalingModeAspectFill;
    [self.player prepareToPlay];//缓存
//    [self.player play];//可以不加这句
#pragma mark - 网络

    NSURL* url = [NSURL URLWithString:@"https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"];
    _player = [[MPMoviePlayerController alloc] initWithContentURL:url];
    [self.view addSubview:self.player.view];

    self.player.view.frame=CGRectMake(0, 0, self.view.frame.size.width, CGRectGetWidth(self.view.frame)*(9.0/16.0));
    [self.player prepareToPlay];
    [self.player play];
#pragma mark - 直播
    NSURL* url = [NSURL URLWithString:@"http://live.hkstv.hk.lxdns.com/live/hks/playlist.m3u8"];
    _player = [[MPMoviePlayerController alloc] initWithContentURL:url];
    [self.view addSubview:self.player.view];
    
    self.player.view.frame=CGRectMake(0, 0, self.view.frame.size.width, CGRectGetWidth(self.view.frame)*(9.0/16.0));
    self.player.controlStyle=MPMovieSourceTypeStreaming;//直播
    [self.player prepareToPlay];
//    [self.player play];
MPMoviePlayerController提供了很多通知,这里我就简单的监听2个。我们可以通过监听到的信息做相应的处理。
#pragma mark - Notification
    
    //监听视频播放结束
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(endPlay) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
    
    //监听当前视频播放状态
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(loadStateDidChange:) name:MPMoviePlayerLoadStateDidChangeNotification object:nil];

#pragma mark - Notification function

-(void)endPlay
{
    NSLog(@"播放结束");
}

-(void)loadStateDidChange:(NSNotification*)sender
{
    switch (self.player.loadState) {
        case MPMovieLoadStatePlayable:
        {
            NSLog(@"加载完成,可以播放");
        }
            break;
        case MPMovieLoadStatePlaythroughOK:
        {
            NSLog(@"缓冲完成,可以连续播放");
        }
            break;
        case MPMovieLoadStateStalled:
        {
            NSLog(@"缓冲中");
        }
            break;
        case MPMovieLoadStateUnknown:
        {
            NSLog(@"未知状态");
        }
            break;
        default:
            break;
    }
}

#pragma mark - dealloc

- (void)dealloc
{
    [[NSNotificationCenter defaultCenter]removeObserver:self];
}
相关文章
|
iOS开发 UED
如何实现 iOS 短视频跨页面的无痕续播?
在一切皆可视频化的今天,短视频内容作为移动端产品新的促活点,受到了越来越多的重视与投入。盒马在秒播、卡顿率、播放成功率等基础优化之外,在用户使用体验上引入了无痕续播能力,提升用户观看视频内容的延续性。本篇将分享盒马在 iOS 短视频方面的实践干货。
如何实现 iOS 短视频跨页面的无痕续播?
|
新零售 缓存 编解码
从 350ms 到 80ms,打造新零售场景下 iOS 短视频的极致丝滑体验
内容作为 App 产品新的促活点,受到了越来越多的重视与投入,短视频则是增加用户粘性、增加用户停留时长的一把利器。短视频的内容与体验直接关系到用户是否愿意长时停留,盒马也提出全链路内容视频化的规划,以实现商品力表达的提升。目前已有短视频场景包括:首页、搜索、商品详情、达人秀、沉浸式视频、真香视频、盒区首页 feeds 流、话题、UGC 内容、话题合集落地页、社群、菜谱、盒拍一键剪、直播回放、weex 等。
从 350ms 到 80ms,打造新零售场景下 iOS 短视频的极致丝滑体验
|
开发工具 iOS开发
产品百科 | 如何在 iOS 模拟器上安装阿里云短视频 SDK
短视频 SDK 在 IOS 模拟器上安装和使用的方法
产品百科 | 如何在 iOS 模拟器上安装阿里云短视频 SDK
|
弹性计算 开发工具 Android开发
产品百科 | 如何快速搭建短视频 App ( iOS 版)
通过阅读本文,您可以快速了解趣视频 Demo 基本信息和搭建方法。
产品百科 | 如何快速搭建短视频 App ( iOS 版)
|
视频直播 iOS开发
短视频直播源码,iOS图片去背景
短视频直播源码,iOS图片去背景
1275 0
|
iOS开发 UED
ios:短视频源码生成webp动图客户端解决方案
最近要求做一个类似抖音将短视频生成动图在列表进行展示的需求,生成动图最大的好处是用户在列表能够最直观地预览到短视频的大致内容,虽然这个是个用户体验的加分项,但是如果我们不能处理好图片占用空间及清晰度问题,也会带来副作用。
4888 0
|
新零售 iOS开发
短视频商城在ios短视频开发上的应用效果
短视频商城在ios短视频开发上的应用效果
1512 0
|
开发工具 iOS开发
【短视频SDK】关于iOS提供的SDK中模拟器版本(debug)和release 版本
iOS的SDK为什么要提供多个版本的framework?
3760 0
|
Java Maven Android开发
|
27天前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
83 3