视频播放 MediaPlayer.framework

MPMoviePlayerViewController VS MPMoviePlayerController

MPMoviePlayerViewController

MPMoviePlayerController

版本支持

Available in iOS 3.2 and later.

Available in iOS 2.0 and later.(多数属性支持3.2后)

大小

只支持全屏播放  如果addsubview 不支持横竖屏

可全屏也可自己设置frame

调用

presentMoviePlayerViewControllerAnimated:

dismissMoviePlayerViewControllerAnimated

addsubview:

属性

moviePlayer

[mMPVC. moviePlayer play];

BOOL shouldAutoplay

NSTimInterval initialPlaybackTime

NSTimeInterval duration

MPMovieControlStyle controlStyle

函数

initWithContentURL

shouldAutorotateToInterfaceOrientation

initWithContentURL

requestThumbnailImagesAtTimes:timeOption

thumbnailImageAtTime:timeOption

timedMetadata (4.0)

notification

MPMoviePlayerPlaybackDidFinishNotification

播放完成

MPMovieMediaTypesAvailableNotification

视频开始播放 (载入完成)

MPMoviePlayerNowPlayingMovieDidChangeNotification

视频开播 (开始载入)

MPMoviePlayerPlaybackStateDidChangeNotification

播放状态变化

判断 mediaPlayer.playbackState

MPMoviePlayerDidEnterFullscreenNotification

全屏 相关

另外 UIWebview播放方式 方便 但是对一些视频不支持 经测试有的流媒体的 使用 MPMoviePlayerController 可以播放 但 UIWebview不支持.

因 MPMoviePlayerController 为单例4.0之后 可使用 AVPlayerLayer 的播放方式 addSubLayer实现多个视频同时播放

player1 = [AVPlayer playerWithURL:[NSURL fileURLWithPath:moviePath]];

player1.actionAtItemEnd = AVPlayerActionAtItemEndNone;

[[NSNotificationCenter defaultCenter] addObserver:self

selector:@selector(playerItemDidReachEnd:)

name:AVPlayerItemDidPlayToEndTimeNotification

object:[player1 currentItem]];

[player1 play];

playerLayer1 = [AVPlayerLayer playerLayerWithPlayer:player1];

playerLayer1.frame = self.bounds;

[self.layer addSublayer:playerLayer1];

参考:

MPMoviePlayerViewController

http://developer.apple.com/library/ios/#documentation/mediaplayer/reference/mpmovieplayerviewcontroller_class/Reference/Reference.html

MPMoviePlayerController

http://developer.apple.com/library/ios/#documentation/mediaplayer/reference/MPMoviePlayerController_Class/Reference/Reference.html

音频播放

AVFoundation.framework

System Sound Services

AVAudioPlayer 

MPMusicPlayerController

特点

播放短音效

播放任意长度音频

播放本地ipod音乐

版本

ios 2.0 or later

ios 2.2 or later

ios 3.0 later

属性

playing,duration,currentTime,

repeatMode,currentPlaybackTime,

numberOfLoops

常用方法:

AudioServicesCreateSy

stemSoundID(CFURLR inFileURL,

SystemSoundID *outSystemSoundID)

AudioServicesPlay

SystemSound(SystemSoundID inSystemSoundID)

- (id)initWithContentsOfURL:(NSURL *)url error:(NSError*)outError;

-  (id)initWithData:(NSData *)dataerror:(NSError *)outError;

-  (BOOL)play;

-  (void)pause;

- (void)stop;

applicationMusicPlayer;

-  (void)setQueueWithQuery:(MPMediaQuery *)query;

-(void)play;

-(void)pause;

-(void)stop;

一 各个播放器初始化方法:

System Sound Services

// 创建路径

NSString*dropMusicPath = [[NSBundle mainBundle] pathForResource:@"bird drop" ofType:@"wav"];

CFURLRefdropURL = (CFURLRef)[NSURL fileURLWithPath:dropMusicPath];

//创建系统声音

AudioServicesCreateSystemSoundID(dropURL, &birdDropID);

 

//播放音效

AudioServicesPlaySystemSound(birdDropID);

AVAudioPlayer 

 

// 设置音乐文件路径

path = [[NSBundle mainBundle] pathForResource:@"InTheMood" ofType:@"mp3"];

// 设置 player    url为本地音频文件路径

player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&error];

在线播放用data初始化

player = [[AVAudioPlayer alloc] initWithData:receiveData error:&err];

[player play];

MPMusicPlayerController

 

 

player = [MPMusicPlayerController applicationMusicPlayer];

MPMediaItemCollection *_mediaCollection = [[MPMediaItemCollection alloc]initWithItems:SongList];

self.mediaCollection = _mediaCollection;

[_mediaCollection release];

[player setQueueWithItemCollection:mediaCollection];

[player setRepeatMode:MPMusicRepeatModeAll];

[player play];

二 音频后台播放:

(1) 设置 AVAudioSession 属性支持

NSError * err;

AVAudioSession*audioSession;

audioSession = [AVAudioSession sharedInstance];

[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];

[audioSession setActive:YES error:nil];

(2)  设置工程文件plist属性

三 系统后台控制音频播放

(1)  重写方法 canBecomeFirstResponder 返回YES

- (BOOL)canBecomeFirstResponder

{

return YES;

}

- (void)viewDidLoad {

[super viewDidLoad];

[self canBecomeFirstResponder];

}

(2) 实现接收RemoteControlEvents方法

- (void)viewDidAppear:(BOOL)animated {

[super viewDidAppear:animated];

[self becomeFirstResponder];

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

}

- (void)viewWillDisappear:(BOOL)animated {

[super viewWillDisappear:animated];

[[UIApplication sharedApplication] endReceivingRemoteControlEvents];

[self resignFirstResponder];

}

(3)  在回调方法做相应处理

- (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent {

if (receivedEvent.type == UIEventTypeRemoteControl)

{

switch (receivedEvent.subtype)

{

case UIEventSubtypeRemoteControlTogglePlayPause:

break;

case UIEventSubtypeRemoteControlPlay:

break;

case UIEventSubtypeRemoteControlPause:

break;

case UIEventSubtypeRemoteControlPreviousTrack:

break;

case UIEventSubtypeRemoteControlNextTrack:

break;

default:

break;

}

}

}

ios音频视频资料--备用的更多相关文章

  1. iOS 音频视频图像合成那点事

    代码地址如下:http://www.demodashi.com/demo/13420.html 人而无信不知其可 前言 很久很久没有写点什么了,只因为最近事情太多了,这几天终于闲下来了,趁此机会,记录 ...

  2. 《转》iOS音频视频初级开发

    代码改变世界 Posts - 73, Articles - 0, Comments - 1539 Cnblogs Dashboard Logout HOME CONTACT GALLERY RSS   ...

  3. IOS音频视频

    视频播放 MediaPlayer.framework MPMoviePlayerViewController VS MPMoviePlayerController MPMoviePlayerViewC ...

  4. iOS 音频视频制作

    --iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制, ...

  5. iOS 音频/视频 学习目录

    参考 iOS原生API  音/视频录制 编辑 https://www.cnblogs.com/kenshincui/p/4186022.html#summary iOS视频编解码常用库比较 http: ...

  6. iOS 直播-获取音频(视频)数据

    iOS 直播-获取音频(视频)数据 // // ViewController.m // capture-test // // Created by caoxu on 16/6/3. // Copyri ...

  7. iOS音频AAC视频H264编码 推流最佳方案

    iOS音频AAC视频H264编码 推流最佳方案 项目都是个人的调研与实验,可能很多不好或者不对的地方请多包涵. 1    功能概况 *  实现音视频的数据的采集 *  实现音视频数据的编码,视频编码成 ...

  8. iOS 微信 音频 视频自动播放

    iOS 微信 音频 视频自动播放 http://www.w3ctech.com/topic/1165

  9. 2015最全iOS开发自学视频资料(基础+实战)

    最全的iOS自学视频,包括c,objective-c,UI等等,没有你找不到的,只有你学不会的,只要你想学,这里都有你所需要的. 推荐教程点这里:http://www.mobiletrain.org/ ...

随机推荐

  1. axel源码学习(0)——程序逻辑

    axel简介 axel是一个命令行下的轻量级http/ftp 下载加速工具,支持多线程下载和断点续传,支持从多个镜像下载同一文件. axel的用法如下: 图 0.1 axel usage axel 粗 ...

  2. xsl输出html代码 非闭合

    ``` </div> <div class="row-fluid"> ···

  3. 【原】Spring与MongoDB集成:配置

    MongoDB的API提供了DBObject接口来实现BSONObject的操作方法,BasicDBObject是具体实现.但是并没有提供DBObject与BeanObject的转换.在还没有了解到与 ...

  4. xampp 安装后无法启动apache 的解决方法

    1,安装xampp 后,apache 无法启动,当时的报错已经没有证据了,大概的翻译就是端口 被block(锁定)的意思 2,通过 查找端口被占用,找到被占用程序,进行杀掉进程,或者卸载软件,参考网址 ...

  5. JAXB - Unmarshalling

    A simple approach for unmarshalling an XML document consists of the creation of a JAXB context and t ...

  6. awk与cut在以空格为分割域时的区别

    awk默认以空格为分割域,比如我想获得某进程pid:[root@SHCTC-GAME12-44 ~]# ps -ef|grep "sshd -f"|grep -v greproot ...

  7. 使用SQLdiag Utility搜集SQL Server诊断信息

    SQLdiag Utility用于搜集诊断信息,给Microsoft技术支持人员做为判断依据. 使用SQLdiag 会进行信息搜集类型 Windows 系统性能日志 Windows 系统日志 SQL ...

  8. 爬虫遇到取到网页为reload的问题

    有的网站防采集,会在页面加上this.window.location.reload(),这时候你就会得到如下代码: <html>   <head>      <meta ...

  9. HW-找7(测试ok满分注意小于等于30000的条件)

    输出7有关数字的个数,包括7的倍数,还有包含7的数字(如17,27,37...70,71,72,73...)的个数 知识点 循环 运行时间限制 0M 内存限制 0 输入 一个正整数N.(N不大于300 ...

  10. ora 32021 设置参数时参数值长度超过255处理办法

    alter system set db_file_name_convert='AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA-.' scope=spfi ...