iOS-边下边播

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/samuelandkevin/article/details/88807217

参考资料:

iOS实现边下边播
mp4的基本格式可参考
TCP交互协议中的字节处理,查看iOS基础之字节处理(NSData,Byte,NSString转换)

解析媒体文件,最关心是视频文件的宽高,时长,码率,编码格式,帧列表,关键帧列表

开发难点:

1.解析视频的头信息(mp4)
2.播放优化(播放到未下载的地方的处理方式)

注意:

手机录制的视频都比较大,1s就得占用1M
上传服务器必须压缩

功能实现:

将视频或图片分段读取并上传服务器,NSFileHandle
读取服务器返回的分段数据并保存在本地

AVPlayer包含以下几个类:

AVURLAsset 是AVAsset的子类,负责网络连接,请求数据
AVPlayerItem 播放资源的状态。
AVPlayer 解码处理成为图像和声音
AVPlayerLayer 图像层

注意:

视频没准备好播放,不要把AVPlayerLayer图层添加到cell上,这样会造成显示的图层变成黑色.

流程:(AVFoundation可以帮我们完成)

建立连接,请求数据 AVURLAsset
数据状态管理 AVPlayerItem
解码数据 AVPlayer
音视频输出 AVPlayerLayer

手动干预系统播放器加载数据的内部实现

AVURLAsset下有一个AVAssetResourceLoader属性
AVAssetResourceLoader 负责加载数据,调用时机:AVURLAsset不知道如何去加载这个URL资源时
AVAssetResourceLoaderDelegate

怎么手动干预?回答:把目标视频URL地址的scheme替换为不能识别的scheme.

视频第一次播放,播放器获取前两个字节的数据,就是URL的contentType

注意:

大文件读取应该分段读取.不应该将视频文件一次性全部读出来.假如一个视频有 1 GB,那内存会突然爆掉

猜你喜欢

转载自blog.csdn.net/samuelandkevin/article/details/88807217