// RootViewController.m
#import "RootViewController.h"
#import <MediaPlayer/MediaPlayer.h>
#define PATH @"http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"
@interface RootViewController ()
{
//创建视频播放器
MPMoviePlayerController * player;
}
@end
@implementation RootViewController
-(void)createBtn
{
UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(100, 100, 100, 100);
[btn setTitle:@"本地播放" forState:UIControlStateNormal];
[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(pressBtn:) forControlEvents:UIControlEventTouchUpInside];
btn.tag=1;
[self.view addSubview:btn];
UIButton * btn1 = [UIButton buttonWithType:UIButtonTypeCustom];
btn1.frame = CGRectMake(100, 200, 100, 100);
[btn1 setTitle:@"网络播放" forState:UIControlStateNormal];
[btn1 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
btn1.tag=2;
[btn1 addTarget:self action:@selector(pressBtn:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn1];
UIButton * btn2 = [UIButton buttonWithType:UIButtonTypeCustom];
btn2.frame = CGRectMake(100, 300, 100, 100);
[btn2 setTitle:@"返回" forState:UIControlStateNormal];
[btn2 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
btn2.tag=3;
[btn2 addTarget:self action:@selector(pressBtn:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn2];
}
-(void)pressBtn:(id)sender
{
// <1>找到要播放的视频的路径
NSString * path = [[NSBundle mainBundle] pathForResource:@"xiatianweidao" ofType:@"mp4"];
// <2>将字符串路径转化成NSURL
// NSURL * url = [NSURL fileURLWithPath:path];
UIButton *btn =(UIButton*)sender;
NSURL * url=nil;
if (btn.tag==2) {
url = [NSURL URLWithString:PATH];
}
else if (btn.tag==1){
url = [NSURL fileURLWithPath:path];
}
else {
[self finishPlaying:nil];
}
//<3>初始化视频播放器
player = [[MPMoviePlayerController alloc]initWithContentURL:url];
//视频播放器 是一个视图控制器 上面有一个自带的视图 所以此处需要设置一些视图的大小
//<4>设置视图的大小
player.view.frame = CGRectMake(0, 100, 320, 200);
//<5>将player上的视图添加在当前视图上
[self.view addSubview:player.view];
//<6>视频播放器没有协议 所有视频播放器的一些操作必须借助通知中心完成 传递的数据信息 都是一些固定的字符串
//通知是由视频播放器发送 当前的视图控制器作为通知的观察者
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(finishPlaying:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
//<7>准备播放视频
//将视频放在缓存中 这样做防止播放的时候出现卡顿的现象
[player prepareToPlay];
}
-(void)finishPlaying:(NSNotification *)notification
{
[player.view removeFromSuperview];
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self createBtn];
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)