【iOS开发-97】MediaPlayer框架中MPMoviePlayerController类视频播放的使用,运行时runtime

本文介绍了媒体播放的基本设置及Runtime开发的相关概念。通过实例展示了如何导入MediaPlayer框架、创建MediaPlayer对象并实现全屏切换功能。同时,解释了Runtime在方法调用过程中的作用及其在Objective-C开发中的应用方式。

(1)使用媒体播放,需要先加载<MediaPlayer/MediaPlayer.h>框架,并#import导入。媒体播放需要注意的几个点在于:

——全屏的设置需要在视图可见后设置才有效。

——各种控制主要是通过通知NSnotificationCenter来实现的,有进入/退出全屏,播放暂停状态改变等等。

#import "WPMoviePlayController.h"
#import <MediaPlayer/MediaPlayer.h>

@interface WPMoviePlayController()
@property(nonatomic,strong) MPMoviePlayerController *movie;
@end

@implementation WPMoviePlayController
-(MPMoviePlayerController *)movie{
    if (_movie==nil) {
        //直接获取文件路径为URL,成功
        NSURL *url=[[NSBundle mainBundle]URLForResource:@"a.mp4" withExtension:nil];
        _movie=[[MPMoviePlayerController alloc]initWithContentURL:url];
        _movie.view.frame=self.view.bounds;
        [self.view addSubview:_movie.view];
    }
    return _movie;
}

-(void)viewDidLoad{
    [super viewDidLoad];
    [self.movie play];
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(enterFullScreen) name:MPMoviePlayerDidEnterFullscreenNotification object:nil];
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(exitFullScreen) name:MPMoviePlayerDidExitFullscreenNotification object:nil];
}

-(void)viewDidAppear:(BOOL)animated{
    //Setting this property to YES before the movie player's view is visible will have no effect.
    //这个属性需要在电影播放器对象view呈现之后设置才有用,光load不行,需要等appear后设置才行,所以在此方法中使用
    self.movie.fullscreen=YES;
}

-(void)enterFullScreen{
    NSLog(@"进入全屏");
}

-(void)exitFullScreen{
    [self.movie stop];
    [self dismissViewControllerAnimated:YES completion:nil];
    NSLog(@"退出全屏");
}

(2)什么是运行时?

——就是每个方法/函数相互调用之间的那些所有东西。

——大多数情况下,运行时就在幕后悄悄运行,它主要用于编写和编译OC源程序

——利用CLang把OC源程序(如main.m)编译成CPP的代码,这样可以看到底层运行时实现的原理,是了解OC底层原理的方法之一。

clang -rewrite-objc main.m

会生成一个main.cpp文件,然后

open main.cpp

可以查看。

面试:你用过Runtime开发吗?

回答:Runtime是方法调用之间的那些东西,是做底层的,我有时候用clang把源代码反编译成C++,没事看看底层实现原理。

内容概要:本文介绍了基于贝叶斯优化的CNN-LSTM混合神经网络在间序列预测中的应用,并提供了完整的Matlab代码实现。该模型结合了卷积神经网络(CNN)在特征提取方面的优势与长短期记忆网络(LSTM)在处理序依赖问题上的强大能力,形成一种高效的混合预测架构。通过贝叶斯优化算法自动调参,提升了模型的预测精度与泛化能力,适用于风电、光伏、负荷、交通流等多种复杂非线性系统的预测任务。文中还展示了模型训练流程、参数优化机制及实际预测效果分析,突出其在科研与工程应用中的实用性。; 适合人群:具备一定机器学习基基于贝叶斯优化CNN-LSTM混合神经网络预测(Matlab代码实现)础和Matlab编程经验的高校研究生、科研人员及从事预测建模的工程技术人员,尤其适合关注深度学习与智能优化算法结合应用的研究者。; 使用场景及目标:①解决各间序列预测问题,如能源出力预测、电力负荷预测、环境数据预测等;②学习如何将CNN-LSTM模型与贝叶斯优化相结合,提升模型性能;③掌握Matlab环境下深度学习模型搭建与超参数自动优化的技术路线。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注贝叶斯优化模块与混合神经网络结构的设计逻辑,通过调整数据集和参数加深对模型工作机制的理解,同可将其框架迁移至其他预测场景中验证效果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值