美文网首页iOS视屏
6.4 视频->2.0 视频特效:画中画

6.4 视频->2.0 视频特效:画中画

作者: 蓝田_Loto | 来源:发表于2016-11-10 15:56 被阅读128次

本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正。


本文相关目录:
===================== 所属文集:6.0 图形和多媒体 =====================
6.1 Quartz 2D->1.1 Quartz 2D 简介
6.2 核心动画->1.0 CALayer的简介
··················· 1.1 CALayer的基本属性
··················· 1.2 CALayer的创建 & 非根layer的隐式动画
··················· 2.0 Core Animation(核心动画)
··················· 3.0 核心动画 & UIView动画
··················· 4.0 常用动画效果
6.3 音频->1.0 录音 未发布
············· 2.0 音效/音乐 未发布
············· iOS项目Demo - 仿·QQ音乐播放器 未发布
6.4 视频->1.0 视频播放方案
············· 2.0 视频特效:画中画
············· 3.0 视频功能
············· iOS项目Demo - 仿·慕课网视频播放器 未发布
6.5 直播 未发布
6.5 直播-> iOS项目Demo - 仿·斗鱼直播 未发布
===================== 所属文集:6.0 图形和多媒体 =====================


视频目录


视频特效:画中画

代码6:画中画 demo

编译环境:Xcode 8.0
模拟器版本:iOS 10
Swift版本:3.0

【OC语言】
#import "ViewController.h"
#import <AVKit/AVKit.h>  // 框架
#import <AVFoundation/AVFoundation.h>  // AVPlayer

@interface ViewController ()<AVPlayerViewControllerDelegate>
@property (nonatomic,strong)AVPlayerViewController *AVPlayerVC;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (IBAction)AVPlayerViewController:(UIButton *)sender {
    // 1.创建播放控制器
    AVPlayerViewController *vc = [[AVPlayerViewController alloc]init];
    self.AVPlayerVC = vc;
    
    // 设置代理
    vc.delegate = self;
    
    // 创建URL
    NSString *path = [[NSBundle mainBundle]pathForResource:@"1.mp4" ofType:nil];
    NSURL *url = [NSURL fileURLWithPath:path];
    
    // 创建播放器
    AVPlayer *player = [[AVPlayer alloc]initWithURL:url];
    vc.player = player;
    
    // 是否显示控制按钮
    //vc.showsPlaybackControls = NO;
    
    // 2.播放
    [player play];
    
    // 3.展示界面
    [self presentViewController:vc animated:YES completion:nil];
    
    // 4.注册通知中心 接受通知(AVPlayerItemDidPlayToEndTimeNotification)
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(didPlayToEndTime)
                                                 name:AVPlayerItemDidPlayToEndTimeNotification
                                               object:nil];
}

// 接收到通知会来到此方法 (效果:切换下一个视频)
- (void)didPlayToEndTime{
    
    // 创建URL,更换视频
    NSString *path = [[NSBundle mainBundle]pathForResource:@"2.mp4" ofType:nil];
    NSURL *url = [NSURL fileURLWithPath:path];
    
    // 直接 换掉 vc的 player
    AVPlayer *player = [[AVPlayer alloc]initWithURL:url];
    
    // 播放
    [player play];
    
    // 设置为替换后的新player
    self.AVPlayerVC.player  = player;
}

#pragma mark - AVPlayerViewControllerDelegate代理方法(对用户画中画的操作进行监听)
// 将要开始画中画时调用的方法
- (void)playerViewControllerWillStartPictureInPicture:(AVPlayerViewController *)playerViewController{
    NSLog(@"1将要开始画中画");
}

// 已经开始画中画时调用的方法
- (void)playerViewControllerDidStartPictureInPicture:(AVPlayerViewController *)playerViewController{
    NSLog(@"2已经开始画中画");
}

// 开启画中画失败调用的方法
- (void)playerViewController:(AVPlayerViewController *)playerViewController failedToStartPictureInPictureWithError:(NSError *)error{
    NSLog(@"3开启画中画失败调");
}

// 将要停止画中画时调用的方法
- (void)playerViewControllerWillStopPictureInPicture:(AVPlayerViewController *)playerViewController{
    NSLog(@"4将要停止画中画");
}

// 已经停止画中画时调用的方法
- (void)playerViewControllerDidStopPictureInPicture:(AVPlayerViewController *)playerViewController{
    NSLog(@"5已经停止画中画");
}

// 是否在开始画中画时自动将当前的播放界面dismiss掉 返回YES则自动dismiss 返回NO则不会自动dismiss
- (BOOL)playerViewControllerShouldAutomaticallyDismissAtPictureInPictureStart:(AVPlayerViewController *)playerViewController{
    NSLog(@"6自动将当前的播放界面dismiss掉");
    return YES;
}

// 用户点击还原按钮,从画中画模式还原回app内嵌模式时调用的方法
- (void)playerViewController:(AVPlayerViewController *)playerViewController restoreUserInterfaceForPictureInPictureStopWithCompletionHandler:(void (^)(BOOL restored))completionHandler{
    NSLog(@"7从画中画模式还原回app内嵌模式");
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
【Swift 语言】(暂无,以后补上)

本文源码 Demo 详见 Github(方便的话,帮忙点个Star,谢啦!)
https://github.com/shorfng/iOS_6.0_Graphics_and_multimedia.git



作者:蓝田(Loto)
出处: 简书

如果你觉得本篇文章对你有所帮助,请点击文章末尾下方“喜欢”
如有疑问,请通过以下方式交流:
评论区回复微信(加好友请注明“简书+称呼”)发送邮件shorfng@126.com



本文版权归作者和本网站共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

相关文章

  • 6.4 视频->2.0 视频特效:画中画

    本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正。 本文相关目...

  • 6.4 视频->3.0 视频功能

    本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正。 本文相关目...

  • 6.4 视频->1.0 视频播放方案

    本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正。 本文相关目...

  • 【拍摄】

    【视频剪辑】 ae字体特效(视频开头) premiere做视频剪辑 ps做素材(花纹、字体) ae粒子特效(视频结...

  • 影视剪辑,实用的剪辑步骤和技巧

    剪辑步骤: 拍摄视频 制作脚本 视频粗剪 视频精剪 视频包装 作品导出 视频剪辑技巧: 画中画 可以添加上自己风格...

  • iOS9 画中画 Picture in Picture

    画中画 (Picture in Picture) iOS9系统在iPad上支持多任务分屏和画中画视频播放,画中画视...

  • 83个薄薄的烟雾特效4K分辨率视频素材

    薄薄的烟雾环绕飘动视频特效由RED摄像机拍摄的烟雾视频素材,例如圆环状烟雾视频特效,薄薄的烟雾视频特效,滚动的烟雾...

  • 哪里有38个圆环状烟雾特效视频素材?

    38个圆环状烟雾特效视频素材由RED摄像机拍摄的烟雾视频素材,例如圆环状烟雾视频特效,薄薄的烟雾视频特效,滚动的烟...

  • SDL 2的Android启动流程与音频播放前的处理

    最近在移植一个音频特效功能,因项目老代码使用SDL 2.0实现了简单的视频播放器。新增功能是根据音频变化改变视频渲...

  • 手机如何制作视频号视频画中画

    手机如何制作视频画中画,首先在手机上安装并启动“王者剪辑app”,进入一键剪辑中的“画中画”功能, 导入背景视频,...

网友评论

    本文标题:6.4 视频->2.0 视频特效:画中画

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