iPhone开发之音视频的播放——MPMoviePlayerViewController和AVAutoPlayer的使用
新建工程,添加音视频框架
编辑控制器的.h文件如下:
<span style="font-size:18px;">//
// ViewController.h
// 音视频预习
//
// Created by apple on 15/9/4.
// Copyright (c) 2015年 LiuXun. All rights reserved.
//#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
#import <MediaPlayer/MediaPlayer.h>
@interface ViewController : UIViewController@property (nonatomic, strong) AVAudioPlayer * player;@end
</span>
编辑控制器的.m文件如下:
<span style="font-size:18px;">//
// ViewController.m
// 音视频预习
//
// Created by apple on 15/9/4.
// Copyright (c) 2015年 LiuXun. All rights reserved.
//#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad
{[super viewDidLoad];self.view.backgroundColor = [UIColor redColor];UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];btn.frame = CGRectMake(20, 200, 213, 40);[btn setTitle:@"播放MV" forState:UIControlStateNormal];[btn addTarget:self action:@selector(play) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:btn];
}-(void) play
{// 播放本地文件视频
// NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"m4v"];
// NSURL *url = [[NSURL alloc] initFileURLWithPath:path];
// MPMoviePlayerViewController *playVC = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
// [self presentMoviePlayerViewControllerAnimated:playVC ];
//
// playVC.view.frame = CGRectMake(100, 100, 200, 300);
// [self.view addSubview:playVC.view];// 播放网路视频文件
// NSURL *url= [NSURL URLWithString:@"http://10.50.129.30/mp4files/52070000013B61EC/www.dcjyxwzx.cn/data//news/video//2015/06/20150609134637_60491.mp4"];
// MPMoviePlayerViewController *playVC = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
// playVC.view.frame = CGRectMake(0, 100, 320, 200);
// [playVC.moviePlayer setControlStyle:MPMovieControlStyleEmbedded];
// playVC.moviePlayer.scalingMode = MPMovieScalingModeFill;
// [self.view addSubview:playVC.view];
//
// [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeFull) name:MPMoviePlayerWillEnterFullscreenNotification object:nil];
// [self presentMoviePlayerViewControllerAnimated:playVC];//播放音频文件NSString *path = [[NSBundle mainBundle] pathForResource:@"一江水" ofType:@"mp3"];if (path) {NSLog(@"LLLL");NSURL *url = [[NSURL alloc] initFileURLWithPath:path];self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];[self.player prepareToPlay];self.player.volume = 1.0f;self.player.numberOfLoops = 0;if (self.player) {if (![self.player isPlaying]) {[self.player play];}}}
}-(void) changeFull
{NSLog(@"+++++++++");}- (void)didReceiveMemoryWarning
{[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}@end
</span>
1、播放器类的介绍
(1)IOS内置了视频播放器,我们可以通过使用MPMoviePlayerController或者MPMoviePlayerViewController类(视图控制器)来播放视频(含流媒体视频播放)。
(2)需要引入MediaPlayer.framewrok 库
(3)MPMoviePlayerController播放器可以任意修改播放页面的尺寸。
(4)MPMoviePlayerViewController类是一个特殊的视图控制器类,它包含了一个播放器(MPMoviePlayerController)。也能播放MP3。功能不够强大。
(5)适用于非专业的播放器。
MPMoviePlayerController使用
// 初始化url
NSURL *url = [NSURL URLWithString:@“http://,,,,,,,”;
// 初始化视频播放
MPMoviePlayerController *moviePlayer = [[MPMoviePlayer alloc] initWithContentURL: url];
// 将视频播放视图加入
[self.view addSubview: moviePlayer.view];
moviePlayer.view.frame = self.view.bounds;
// 开始播放
[moviePlayer play];
2、比较常用的几个通知
// 视频播放结束的通知
MPMoviePlayerPlayBackDidFinishNotification
//视频播放状态改变的通知
MPMoviePlayerPlayBackStateDidChangeNotification
//视频加载状态改变的通知
MPMoviePlayerPlayerLoadStateDidChangeNotification
发送通知的方法:在视频所在的控制器的
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 方法中获取通知并发送消息
具体代码如下:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];if (self) {[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playDidChangeNotification:) name:MPMoviePlayerPlaybackStateDidChangeNotification object:nil];}return self;
}- (void)playDidChangeNotification:(NSNotification *)notification {MPMoviePlayerController *moviePlayer = notification.object;MPMoviePlaybackState playState = moviePlayer.playbackState;if (playState == MPMoviePlaybackStateStopped) {NSLog(@"停止");} else if(playState == MPMoviePlaybackStatePlaying) {NSLog(@"播放");} else if(playState == MPMoviePlaybackStatePaused) {NSLog(@"暂停");}}
控制横竖屏的方法如下:
在控制器中添加如下方法
- (BOOL)shouldAutorotate {return YES;
}- (NSUInteger)supportedInterfaceOrientations {return UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskLandscapeLeft;
}//6.0之前用于控制横、竖
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) {return YES;}return NO;
}
iPhone开发之音视频的播放——MPMoviePlayerViewController和AVAutoPlayer的使用相关推荐
- iOS 微信 音视频自动播放 原生接口WeixinJSBridge API(一些整理 小技巧)
原文链接1:https://www.w3ctech.com/topic/1165 原文链接2:https://www.cnblogs.com/jasonduan/p/5635048.html 做一下整 ...
- 短视频app源码开发,音视频混合的实现
在短视频app源码开发中,音视频的混合是对音视频数据进行处理时,非常重要的一个环节,只有做好了音视频混合,才能录制更好的短视频内容. //音视频合成 func videoAudioMerge() {/ ...
- 迅为RK3399开发板音视频开发之Debian9 多媒体测试
iTOP3399平台 Debian 系统音视频部分应用层软件采用的是 Gstreamer,支持硬件编解码.本节所有的 示例均是基于 Gstreamer 命令行的形式. iTOP3399 平台内部有一个 ...
- 爱奇艺知识的音视频通用播放架构实践
导读 随着经济的发展"衣食住行"等基础消费已不再是消费者首要考量,自我认知的提高便成为现阶段消费的必然选择.尤其是在移动互联网崛起的当下,移动支付和不限流业务的普及,人们为他们感兴 ...
- ffmpeg播放器 android,Android使用FFmpeg(六)--ffmpeg实现音视频同步播放
关于 准备工作 正文 依旧依照流程图来逐步实现同步播放: 从流程图可以看出,实现同步播放需要三个线程,一个开启解码的装置得到packet线程,然后分别是播放音频和视频的线程.这篇简书是以音频播放为基准 ...
- linux视频应用程序开发,Linux平台音视频开发和音视频SDK应用
Linux平台音视频开发和音视频SDK应用 下面介绍一款强大的音视频即时通讯平台给大家,它就是--云智真音视频SDK. 云智真提供一套跨平台的音.视频即时通讯解决方案,基于先进的H.264视频编码标准 ...
- 海思Hi3559a音视频同时播放的例子
原文链接:海思Hi3559a音视频同时播放的例子 在mpp/sample下新建av目录 (1)编写Makefile,如下: Hisilicon Hi35xx sample Makefile inclu ...
- Android WebView加载H5音视频自动播放、关闭Activity停止播放
在Android加载H5,实现H5中的音视频自动播放 在Activity中添加代码: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELL ...
- ffmpeg java 播放视频_Javacv使用ffmpeg实现音视频同步播放
最近用javaCV的ffmpeg包的FFmpegFrameGrabber帧捕捉器对捕捉到的音频帧和视频帧做了同步的播放.采用的同步方法是视频向音频同步. 具体的思路如下: (1)首先介绍ffmpeg是 ...
最新文章
- WordPress更新时提示无法连接到FTP服务器的解决方案
- c++ 弧形面如何逆时针排序_这8种常见的Java排序算法,学算法必看!
- linux中facl有什么作用,在Linux中使用setfacl后权限被拒绝
- python单词首字母大写_在Python中将每个单词的首字母大写
- fetch 函数分装
- 从WINDOWS切换到LINUX后,JDBC MYSQL 中文存储变为问号问题
- linux下python脚本处理数据_在Linux中通过Python脚本访问mdb数据库的方法
- python在化学中的应用_用Python配平化学方程式的方法
- 互联网创业的重重风险
- 台式计算机模拟软件,全国计算机一级Office2010+win7版考试模拟软件
- (5.3)NISP1级——【电子邮件安全】
- PS CC —— 键盘快捷键
- Final IK详解
- 百度飞桨小白逆袭大神之鲤鱼跃龙门
- java项目使用百度云AI完成刷脸登录
- 【洛谷P3258】松鼠的新家
- 小数分频器vhdl实现_基于FPGA的小数分频器的设计与实现.doc
- Altium Designer(五)光耦元件模型的创建
- SR-TE、SR-BE原理
- 算法实习生学习之路--UCB算法
热门文章
- 真实项目技术总结:Petri网和工作流
- 西门子变频器SINAMICS G120P系列特点有哪些?
- java毕业设计基于的电商平台的设计与实现Mybatis+系统+数据库+调试部署
- 中科大MEM工程管理硕士专业考研初试与复试经验分享
- HTML快速自学教程(W3school教程精简)
- vue+elementUI使用Wavesurfer.js音频可视化
- prometheus-webhook-dingtalk-1.4.0无法找到targets
- 好用的数据恢复软件记录
- 宝付(上海宝付)用户说说那些“无故”被扣费背后的黑幕
- oracle重置序列从1开始