A low level video player based on AVPlayer with cache and preload support.
- Simple and flexible
- Cache support
- Preload support
- Memory Mapped IO
To run the example project, clone the repo, and run pod install
from the Example directory first.
// create
self.player = [[LLVideoPlayer alloc] init];
[self.view addSubview:self.player.view];
self.player.view.frame = CGRectMake(10, 80, 300, 200);
self.player.delegate = self;
// load
NSURL *url = [NSURL URLWithString:@"<your stream url>"];
[self.player loadVideoWithStreamURL:url];
// pause
[self.player pauseContent];
// play
[self.player playContent];
// dismiss
[self.player dismissContent];
// delegate
// see the header file for details.
There are some significant delegate methods you may be interested in:
// The first frame of the video is ready to display.
- (void)videoPlayer:(LLVideoPlayer *)videoPlayer readyForDisplay:(BOOL)readyForDisplay;
// The duration is available.
- (void)videoPlayer:(LLVideoPlayer *)videoPlayer durationDidLoad:(NSNumber *)duration;
// The buffer is empty or not.
- (void)videoPlayer:(LLVideoPlayer *)videoPlayer playbackBufferEmpty:(BOOL)bufferEmpty;
// The video is likely to keepup or not.
- (void)videoPlayer:(LLVideoPlayer *)videoPlayer playbackLikelyToKeepUp:(BOOL)likelyToKeepUp;
// The playback is stalled.
- (void)videoPlayerPlaybackStalled:(LLVideoPlayer *)videoPlayer;
/// more...
See LLVideoPlayerDelegate
for more details.
LLVideoPlayer comes without any UI controls for flexibility. Your can add your custom contols to the container view LLVideoPlayerView
.
LLVideoPlayer supports customize cache policy. To enable the cache support (default is disable):
player.cacheSupportEnabled = YES; // That's all, so simple...
To set your customize cache policy:
LLVideoPlayerCachePolicy *policy = [LLVideoPlayerCachePolicy new];
policy.diskCapacity = 500ULL << 20; // max disk capacity in bytes, for example 500MiB
policy.outdatedHours = 7 *24; // outdated hours, for example 7 days
player.cachePolicy = policy;
See LLVideoPlayerCachePolicy
for more details.
To clear cache manually:
[LLVideoPlayer clearAllCache];
// start a preload request
[LLVideoPlayer preloadWithURL:url];
// start a preload request with specified bytes
[LLVideoPlayer preloadWithURL:url bytes:(1 << 20)];
// cancel a preload request
[LLVideoPlayer cancelPreloadWithURL:url];
// cancel all preload requests
[LLVideoPlayer cancelAllPreloads];
iOS 7 or above
LLVideoPlayer is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "LLVideoPlayer"
LLVideoPlayer is available under the MIT license. See the LICENSE file for more info.