概述
简介:现阶段下主要利用AVFoundation解决视频文件边下边播的问题.
其大致思路是
1.AVPlayerItem 是利用相应的AVURLAsset资源创建的
2.根据媒体资源URL创建AVURLAsset时需要对url进行修改,以便确保下一步的实施.
3.将asset的resourceLoader设置代理对象,代理对象有必要实现其中相关方法.
下面根据源码一步步讲解具体实现方法
self.resouerLoader = [[DLXAVAssetResourceLoaderalloc] init];
self.resouerLoader.delegate = self;
//设置URL SCHEME
NSURL *url =[_resouerLoader getSchemeVideoURL:[NSURL URLWithString:urlString]];
self.videoURLAsset = [AVURLAsset URLAssetWithURL:url options:nil];
[self.videoURLAsset.resourceLoader setDelegate:self.resouerLoader queue:dispatch_get_main_queue()];
playerItem = [AVPlayerItem playerItemWithAsset:self.videoURLAsset];
根据上诉代码可以实现第一二步,并设置了其代理对象.现在来看看代理对象的实现.
首先,创建代理对象时应遵循一下AVAssetResourceLoaderDelegate协议,如
@interface DLXAVAssetResourceLoader : NSObject <AVAssetResourceLoaderDelegate>
并实现下面协议方法
-(BOOL)resourceLoader:(AVAssetResourceLoader *)resourceLoader shouldWaitForLoadingOfRequestedResource:(AVAssetResourceLoadingRequest *)loadingRequest;
-(void)resourceLoader:(AVAssetResourceLoader *)resourceLoader didCancelLoadingRequest:(AVAssetResourceLoadingRequest *)loadingRequest;
这两个方法正是第二步中修改了URL以确保程序实施的方法.其中第一个方法中应返回YES,并处理相关视频分段下载以及将数据填回给相关请求的问题.其中下载问题可以通过重新创建对象文件来处理以更好优化项目架构,这里不再赘述.
然后在AVAssetResourceLoader代理对象文件需要将数据请求的文件长度文件格式等进行获取设置,并将获取的视频数据传送给相关请求.
其中数据格式请求是根据loadingRequest.contentInformationRequest来操作的.
.- (void)respondWithData:(NSData *)data; //传送获取的数据
最后
以上就是清秀故事为你收集整理的基于利用AVFoundation 解决视频文件边下边播简析的全部内容,希望文章能够帮你解决基于利用AVFoundation 解决视频文件边下边播简析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复