iOS-边下边播

参考资料:

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,那内存会突然爆掉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值