视频播放器封装支持下载、缓存

2023-10-29  本文已影响0人  鬼才冯三郎

我们实现了AVAssetResourceLoaderDelegate协议来拦截视频加载请求,并将其缓存起来。通过在resourceLoader:shouldWaitForLoadingOfRequestedResource:方法中处理请求,我们可以检查是否已经存在缓存数据,如果是,则直接使用缓存数据,否则发起下载请求。

在startDataRequest方法中,我们使用NSURLSessionDataTask来异步下载视频数据,并在下载完成后// Player.h

import <UIKit/UIKit.h>

import <AVFoundation/AVFoundation.h>

@interface Player : NSObject<AVAssetResourceLoaderDelegate>

@property (nonatomic, strong) NSURL *videoURL;
@property (nonatomic, strong) AVPlayer *player;
@property (nonatomic, strong) AVPlayerLayer *playerLayer;

@end

// Player.m

import "Player.h"

@implementation Player {
AVAssetResourceLoadingRequest *_loadingRequest;
NSMutableData *_cachedData;
}

pragma mark - AVAssetResourceLoaderDelegate

@end

上一篇 下一篇

猜你喜欢

热点阅读