ios音频视频资料--备用
视频播放 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
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; |
一 各个播放器初始化方法:
1 System Sound Services
// 创建路径
NSString*dropMusicPath = [[NSBundle mainBundle] pathForResource:@"bird drop" ofType:@"wav"];
CFURLRefdropURL = (CFURLRef)[NSURL fileURLWithPath:dropMusicPath];
//创建系统声音
AudioServicesCreateSystemSoundID(dropURL, &birdDropID);
//播放音效
AudioServicesPlaySystemSound(birdDropID);
2 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];
3 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音频视频资料--备用的更多相关文章
- iOS 音频视频图像合成那点事
代码地址如下:http://www.demodashi.com/demo/13420.html 人而无信不知其可 前言 很久很久没有写点什么了,只因为最近事情太多了,这几天终于闲下来了,趁此机会,记录 ...
- 《转》iOS音频视频初级开发
代码改变世界 Posts - 73, Articles - 0, Comments - 1539 Cnblogs Dashboard Logout HOME CONTACT GALLERY RSS ...
- IOS音频视频
视频播放 MediaPlayer.framework MPMoviePlayerViewController VS MPMoviePlayerController MPMoviePlayerViewC ...
- iOS 音频视频制作
--iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制, ...
- iOS 音频/视频 学习目录
参考 iOS原生API 音/视频录制 编辑 https://www.cnblogs.com/kenshincui/p/4186022.html#summary iOS视频编解码常用库比较 http: ...
- iOS 直播-获取音频(视频)数据
iOS 直播-获取音频(视频)数据 // // ViewController.m // capture-test // // Created by caoxu on 16/6/3. // Copyri ...
- iOS音频AAC视频H264编码 推流最佳方案
iOS音频AAC视频H264编码 推流最佳方案 项目都是个人的调研与实验,可能很多不好或者不对的地方请多包涵. 1 功能概况 * 实现音视频的数据的采集 * 实现音视频数据的编码,视频编码成 ...
- iOS 微信 音频 视频自动播放
iOS 微信 音频 视频自动播放 http://www.w3ctech.com/topic/1165
- 2015最全iOS开发自学视频资料(基础+实战)
最全的iOS自学视频,包括c,objective-c,UI等等,没有你找不到的,只有你学不会的,只要你想学,这里都有你所需要的. 推荐教程点这里:http://www.mobiletrain.org/ ...
随机推荐
- Swift和OC相互调
在项目中不免会有多中语言开发, 不说别的就我个人而言, 之前一直都是用 OC 写的代码, 封装很多工具类, 而苹果新出来 Swift , 现在项目在向 Swift 过渡, 或者新项目是 Swift , ...
- unique函数 (STL)
转自http://www.cnblogs.com/heyonggang/archive/2013/08/07/3243477.html 类属性算法unique的作用是从输入序列中“删除”所有相邻的重复 ...
- android之TCP客户端框架
一.程序框架 1.1 创建方法 onCreate 1.1.1 创建连接按键线程,并使能线程(触发原因:可按键.其他操作,并进行状态判断): Connect_Thread connect_Thread ...
- GitHub这么火,程序员你不学学吗? 超简单入门教程 干货
本GitHub教程旨在能够帮助大家快速入门学习使用GitHub. 本文章由做全栈攻城狮-写代码也要读书,爱全栈,更爱生活.原创.如有转载,请注明出处. GitHub是什么? GitHub首先是个分布式 ...
- MYSQL之性能优化 ----MySQL性能优化必备25条
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数 ...
- VBA实现随意输入组合码,查询唯一标识码
记录背景: 需要在excel中查询出组合码,对应的唯一标识码. 举例 组合码:4+5+6+9+1*2 标识码:A1 界面随意输入组合码:1*2+4+5+6+9 输出标识码:A1 VBA实现: P ...
- Swift学习的新工具---REPL
从xcode6.1开始,苹果官方提供了一个新的辅助开发swift的工具,即repl(read eval print loop) OS X Yosemite系统下,打开终端应用程序,输入swift: 如 ...
- Ext.Net学习笔记19:Ext.Net FormPanel 简单用法
Ext.Net学习笔记19:Ext.Net FormPanel 简单用法 FormPanel是一个常用的控件,Ext.Net中的FormPanel控件同样具有非常丰富的功能,在接下来的笔记中我们将一起 ...
- 关于懒加载(lazy loading)
懒加载---即为延迟加载,顾名思义在需要的时候才加载,这样做效率会比较低,但是占用内存低,iOS设备内存资源有限,如果程序启动使用一次性加载的方式可能会耗尽内存,这时可以使用懒加载,先判断是否有,没有 ...
- Eclipse修改java代码后自动重启Tomcat解决办法
今天甚是郁闷,项目马上要上线了,早上刚到公司打开MyEclipse 10.07提示过期提示,这对于用惯了破解软件的帝国用户的我原本以为小菜一碟. 于是到网上到处找破解软件,不用多长时间,Ok 破解成功 ...