对于MPMoviePlayerController:
1,支持H264编码的视频格式 和 流媒体编码HLS(H264为编码格式的MP4、MOV、M4V、M2V、3GP等。)
2,支持大部分的音频编码格式
3,使用的是硬解码,GPU
4,如果要播放rmvb格式可以考虑用第三方框架ffmpeg,不过它用的是软解码,比较耗CPU,会有发热情况发生。
5,可定制化比较差
对于AVPlayer:
1,视频加载状态
通过KVO监听AVPlayerItem的status属性来获得。当AVPlayerItem的status属性为AVPlayerStatusReadyToPlay时,表明视频加载完成。
2,视频缓冲状态
同样,通过KVO监听AVPlayerItem的loadedTimeRanges属性来获得。视频每缓冲一部分这个属性数据就会被更新,当loadedTimeRanges的值改变时可以获得本次缓冲加载的视频范围,包含起始时间、本次加载时长),这样一来就可以实时获得缓冲情况。
3,播放进度状态
通过AVPlayer的- (id)addPeriodicTimeObserverForInterval:(CMTime)interval queue:(dispatch_queue_t)queue usingBlock:(void (^)(CMTime time))block方法获得播放进度,这个方法会在设定的时间间隔内定时更新播放进度。
对于AVQueuePlayer
AVQueuePlayer用于列表播放,虽然AVPlayer通过监听播放状态也可以做到视频结束后的自动切换,但是使用AVQueuePlayer加载会快很多。应该是AVFoundation框架对AVQueuePlayer进行了优化,排队的视频会进行预加载。