新建工程,添加音视频框架

编辑控制器的.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的使用相关推荐

  1. iOS 微信 音视频自动播放 原生接口WeixinJSBridge API(一些整理 小技巧)

    原文链接1:https://www.w3ctech.com/topic/1165 原文链接2:https://www.cnblogs.com/jasonduan/p/5635048.html 做一下整 ...

  2. 短视频app源码开发,音视频混合的实现

    在短视频app源码开发中,音视频的混合是对音视频数据进行处理时,非常重要的一个环节,只有做好了音视频混合,才能录制更好的短视频内容. //音视频合成 func videoAudioMerge() {/ ...

  3. 迅为RK3399开发板音视频开发之Debian9 多媒体测试

    iTOP3399平台 Debian 系统音视频部分应用层软件采用的是 Gstreamer,支持硬件编解码.本节所有的 示例均是基于 Gstreamer 命令行的形式. iTOP3399 平台内部有一个 ...

  4. 爱奇艺知识的音视频通用播放架构实践

    导读 随着经济的发展"衣食住行"等基础消费已不再是消费者首要考量,自我认知的提高便成为现阶段消费的必然选择.尤其是在移动互联网崛起的当下,移动支付和不限流业务的普及,人们为他们感兴 ...

  5. ffmpeg播放器 android,Android使用FFmpeg(六)--ffmpeg实现音视频同步播放

    关于 准备工作 正文 依旧依照流程图来逐步实现同步播放: 从流程图可以看出,实现同步播放需要三个线程,一个开启解码的装置得到packet线程,然后分别是播放音频和视频的线程.这篇简书是以音频播放为基准 ...

  6. linux视频应用程序开发,Linux平台音视频开发和音视频SDK应用

    Linux平台音视频开发和音视频SDK应用 下面介绍一款强大的音视频即时通讯平台给大家,它就是--云智真音视频SDK. 云智真提供一套跨平台的音.视频即时通讯解决方案,基于先进的H.264视频编码标准 ...

  7. 海思Hi3559a音视频同时播放的例子

    原文链接:海思Hi3559a音视频同时播放的例子 在mpp/sample下新建av目录 (1)编写Makefile,如下: Hisilicon Hi35xx sample Makefile inclu ...

  8. Android WebView加载H5音视频自动播放、关闭Activity停止播放

    在Android加载H5,实现H5中的音视频自动播放  在Activity中添加代码: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELL ...

  9. ffmpeg java 播放视频_Javacv使用ffmpeg实现音视频同步播放

    最近用javaCV的ffmpeg包的FFmpegFrameGrabber帧捕捉器对捕捉到的音频帧和视频帧做了同步的播放.采用的同步方法是视频向音频同步. 具体的思路如下: (1)首先介绍ffmpeg是 ...

最新文章

  1. WordPress更新时提示无法连接到FTP服务器的解决方案
  2. c++ 弧形面如何逆时针排序_这8种常见的Java排序算法,学算法必看!
  3. linux中facl有什么作用,在Linux中使用setfacl后权限被拒绝
  4. python单词首字母大写_在Python中将每个单词的首字母大写
  5. fetch 函数分装
  6. 从WINDOWS切换到LINUX后,JDBC MYSQL 中文存储变为问号问题
  7. linux下python脚本处理数据_在Linux中通过Python脚本访问mdb数据库的方法
  8. python在化学中的应用_用Python配平化学方程式的方法
  9. 互联网创业的重重风险
  10. 台式计算机模拟软件,全国计算机一级Office2010+win7版考试模拟软件
  11. (5.3)NISP1级——【电子邮件安全】
  12. PS CC —— 键盘快捷键
  13. Final IK详解
  14. 百度飞桨小白逆袭大神之鲤鱼跃龙门
  15. java项目使用百度云AI完成刷脸登录
  16. 【洛谷P3258】松鼠的新家
  17. 小数分频器vhdl实现_基于FPGA的小数分频器的设计与实现.doc
  18. Altium Designer(五)光耦元件模型的创建
  19. SR-TE、SR-BE原理
  20. 算法实习生学习之路--UCB算法

热门文章

  1. 真实项目技术总结:Petri网和工作流
  2. 西门子变频器SINAMICS G120P系列特点有哪些?
  3. java毕业设计基于的电商平台的设计与实现Mybatis+系统+数据库+调试部署
  4. 中科大MEM工程管理硕士专业考研初试与复试经验分享
  5. HTML快速自学教程(W3school教程精简)
  6. vue+elementUI使用Wavesurfer.js音频可视化
  7. prometheus-webhook-dingtalk-1.4.0无法找到targets
  8. 好用的数据恢复软件记录
  9. 宝付(上海宝付)用户说说那些“无故”被扣费背后的黑幕
  10. oracle重置序列从1开始