Skip to content

A simple wrapper around the AVPlayer and AVPlayerLayer classes

License

Notifications You must be signed in to change notification settings

nghialv/VIMVideoPlayer

 
 

Repository files navigation

VIMVideoPlayer

VIMVideoPlayer is a simple wrapper around the AVPlayer and AVPlayerLayer classes. Check out the Pegasus project for a demo.

Setup

Add the VIMVideoPlayerView and VIMVideoPlayer classes to your project.

Do this by including it as a git submodule or by using cocoapods:

# Add this to your podfile
target 'MyTarget' do
	pod 'VIMVideoPlayer', '5.4.2'
end

Usage

Create a new VIMVideoPlayerView and add it to your view hierarchy:

#import "VIMVideoPlayerView.h"

...

- (void)viewDidLoad
{
    [super viewDidLoad];
  
    self.videoPlayerView = [[VIMVideoPlayerView alloc] init];
    self.videoPlayerView.translatesAutoresizingMaskIntoConstraints = NO;
    self.videoPlayerView.delegate = self;

    [self.videoPlayerView setVideoFillMode:AVLayerVideoGravityResizeAspect];
    [self.videoPlayerView.player enableTimeUpdates];
    [self.videoPlayerView.player enableAirplay];

    [self.view addSubview:self.videoPlayerView];

    NSDictionary *views = NSDictionaryOfVariableBindings(_videoPlayerView);
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[_videoPlayerView]-0-|" options:0   metrics:nil views:views]];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[_videoPlayerView]-0-|" options:0   metrics:nil views:views]];
}

Play a video:

// Using an NSURL

NSURL *URL = ...;
[self.videoPlayerView.player setURL:URL];
[self.videoPlayerView.player play];

// Using an AVPlayerItem

AVPlayerItem *playerItem = ...;
[self.videoPlayerView.player setPlayerItem:playerItem];
[self.videoPlayerView.player play];

// Or using an AVAsset

AVAsset *asset = ...;
[self.videoPlayerView.player setAsset:asset];
[self.videoPlayerView.player play];

Optionally implement the VIMVideoPlayerViewDelegate protocol methods:

@protocol VIMVideoPlayerViewDelegate <NSObject>

@optional
- (void)videoPlayerViewIsReadyToPlayVideo:(VIMVideoPlayerView *)videoPlayerView;
- (void)videoPlayerViewDidReachEnd:(VIMVideoPlayerView *)videoPlayerView;
- (void)videoPlayerView:(VIMVideoPlayerView *)videoPlayerView timeDidChange:(CMTime)cmTime;
- (void)videoPlayerView:(VIMVideoPlayerView *)videoPlayerView loadedTimeRangeDidChange:(float)duration;
- (void)videoPlayerView:(VIMVideoPlayerView *)videoPlayerView didFailWithError:(NSError *)error;

@end

See VIMVideoPlayer.h for additional configuration options and functionality.

See VIMVideoPlayerViewController for an example of how to encapsulate a VIMVideoPlayerView instance with playback controls (play/pause/seek/airplay etc).

License

VIMVideoPlayer is available under the MIT license. See the LICENSE file for more info.

Questions?

Tweet at us here: @vimeoapi

Post on Stackoverflow with the tag vimeo-ios

Get in touch here

About

A simple wrapper around the AVPlayer and AVPlayerLayer classes

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Objective-C 83.3%
  • Ruby 16.7%