Coder Social home page Coder Social logo

asbplayerscrubbing's Introduction

Build Status

Purpose

ASBPlayerScrubbing is an Objective-C library for easily adding scrubbing behavior to your AVPlayer on iOS.

Using ASBPlayerScrubbing requires only to link your player and slider to it. ASBPlayerScrubbing does all the wiring and computation to synchronize both slider and player. You can also optionally plug your time labels to the scrubbing such that they are also synchronized and show the corresponding times.

Example

See the contained example to get a sample of ASBPlayerScrubbing created with Interface Builder.

Behavior class

ASBPlayerScrubbing is a pure behavior class, it does not come with any graphical component.

This means you are supposed to already have your own AVPlayer as well as your own player control components such as a UISlider, and some UILabel for time labels. By using ASBPlayerScrubbing, you are able to bind all these components together in order to get a consistent scrubbing behavior.

As ASBPlayerScrubbing is a pure behavior, it is highly reusable whatever your UI is made of.

Features

  • Update slider position depending on player time
  • Update player time depending on slider position
  • Change player time by taping anywhere on slider
  • Play from the beginning if end is reached and play is called
  • Update time labels (current time, remaining time and duration) with timecodes (hours:minutes:seconds or hours:minutes:seconds:frames)
  • Update duration label as soon as this metadata is available from the player item

Using

Copy ASBPlayerScrubbing.h and ASBPlayerScrubbing.m in your project.

You can either create a ASBPlayerScrubbing by code or inside Interface Builder.

Creating with Interface Builder

Inside InterfaceBuilder, add an object to your nib or storyboard, and set its class to ASBPlayerScrubbing. Create an outlet inside your ViewController which links to the ASBPlayerScrubbing object. Then link your slider to the corresponding ASBPlayerScrubbing slider outlet. Optionally, you can also link your time labels.

In your ViewController viewDidLoad method, you still need to set your player to the ASBPlayerScrubbing player property.

self.scrubbing.player = player;

NOTE: Creating an outlet inside your ViewController to keep track of the ASBPlayerScrubbing object is mandatory. This ensures the object won't be released.

Creating by code

Simply create a ASBPlayerScrubbing and set your player and your slider. Nothing more!

self.scrubbing = [ASBPlayerScrubbing new];
self.scrubbing.player = player;
self.scrubbing.slider = slider;

Time Labels

ASBPlayerScrubbing can automatically update these typical time labels:

  • current time
  • duration
  • remaining time.

These labels shows the time by default in a standard format using hours, minutes and seconds as for example "05:23" (5 minutes 23 seconds) or "1:23:09" (1 hour 23 minutes 9 seconds). Optionally it can also show frame numbers as for example "1:23:09:24" (1 hour 23 minutes 9 seconds 24 frames). The maximum frame number depends on the player item frame rate.

The remaining time is typically shown with a minus sign.

Properties

@property (nonatomic, assign) BOOL showTimeHours;

Indicates whether time hours are always shown in time labels even if time is less than an hour. Defaults to NO.

@property (nonatomic, assign) BOOL showTimeFrames;

Indicates whether frames are shown in time labels. Defaults to NO.

@property (nonatomic, assign) BOOL showMinusSignOnRemainingTime;

Indicates whether a minus sgn is shown on remaining time label. Defaults to YES.

Limitations

ASBPlayerScrubbing does not support a change of currentItem on AVPlayer. ASBPlayerScrubbing does not support AVQueuePlayer with multiple AVPlayerItem.

ARC Compatibility

ASBPlayerScrubbing requires ARC. If you wish to use ASBPlayerScrubbing in a non-ARC project, just add the -fobjc-arc compiler flag to the ASBPlayerScrubbing.m class. To do this, go to the Build Phases tab in your target settings, open the Compile Sources group, double-click ASBPlayerScrubbing.m in the list and type -fobjc-arc into the popover.

Todo

  • Improve drag support on slider
  • Change scrubing speed depending on the finger vertical distance to the slider

Recommended reading

If you want to known more about behaviors:

Licence

ASBPlayerScrubbing is available under the MIT license.

Author

Philippe Converset, AutreSphere - [email protected]

@Follow me on Twitter

asbplayerscrubbing's People

Contributors

autresphere avatar bibumimu avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.