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 defaultCenteraddObserver: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;

        }

    }

}

原文地址:https://www.cnblogs.com/isItOk/p/4875710.html