Skip to content

Repository files navigation

smpte.php

Build Statuscodecov

Easily deal with SMPTE Timecode format in PHP. If you need a Javascript lib, check out fireworkweb/smpte.js.

Installation

You can install the package via composer:

composer require fireworkweb/smpte

Usage

Include the Timecode or Validations classes:

useFireworkWeb\SMPTE\Timecode;
useFireworkWeb\SMPTE\Validations;

You can instantiate it directly using new:

// passing frame count$timecode = newTimecode(360);
// passing a timecode string$timecode = newTimecode('00:00:01:10');
// passing a Datetime object$timecode = newTimecode(new \DateTime('01:34:12'));

Or you can use the static helper:

$timecode = Timecode::fromSeconds(10);

Properties

PropertyTypeDescription
getFrameCount()intTotal number of frames
getHours()intHours number
getMinutes()intMinutes number
getSeconds()intSeconds number
getFrames()intFrames number
durationInSeconds()intTimecode duration in seconds

Object Methods

__construct($time = 0, $frameRate = null, $dropFrame = null)

  • $time: int|String|Timecode time to start with.
  • $frameRate: float frame rate to calculate the timecode.
  • $dropFrame: bool indicates if is drop frame. ONLY WITH 29.97 FPS

$time as int is the frame count to be setted with. To deal with seconds, use fromSeconds.

Note: if $frameRate or $dropFrame are null, it will use the default.

toString() / __toString()

Returns a timecode string representation.

(newTimecode(360))->toString();
// "00:00:15:00"

add($time, $operation = 1)

Adds a timecode or a frame count to the current Timecode object.

  • $time: int|String|Timecode indicating the value to be added.
  • $operation: int used to get the sign of time.
  • return: Timecode Reference to the Timecode object.
$tc = newTimecode('00:01:00:00');
// Adding from string$tc->add('00:00:30:00')->toString();
// 00:01:30:00// Adding frame count$tc->add(1)->toString();
// 00:01:30:01// Adding from another object$tc2 = newTimecode('00:01:00:00');
$tc->add($tc2)->toString();
// 00:02:30:01

subtract($time)

Substracts a timecode or a frame count to the current Timecode object.

  • $time: int|String|Timecode indicating the value to be added.
  • return: Timecode Reference to the Timecode object.
$tc = newTimecode('00:03:00:00');
// Subtracting from string$tc->subtract('00:00:30:00')->toString();
// 00:02:30:00// Subtracting frame count$tc->subtract(1)->toString();
// 00:02:29:23// Subtracting from another object$tc2 = newTimecode('00:01:00:00');
$tc->subtract($tc2)->toString();
// 00:01:29:23

setHours($hours)

Directly set object hours.

  • $hours: int indicating the value to be setted.
$tc = newTimecode('00:03:00:00');
$tc->setHours(1)->toString();
// 01:03:00:00

setMinutes($minutes)

Directly set object minutes.

  • $minutes: int indicating the value to be setted.
$tc = newTimecode('00:03:00:00');
$tc->setMinutes(1)->toString();
// 00:01:00:00

setSeconds($seconds)

Directly set object seconds.

  • $seconds: int indicating the value to be setted.
$tc = newTimecode('00:03:00:00');
$tc->setSeconds(1)->toString();
// 00:03:01:00

setFrames($frames)

Directly set object frames.

  • $frames: int indicating the value to be setted.
$tc = newTimecode('00:03:00:00');
$tc->setFrames(1)->toString();
// 00:03:00:01

setFrameCount($frameCount)

Directly set object frame count. This will recalculate all other attributes, so use it with care.

  • $frameCount: int indicating the value to be setted.
$tc = newTimecode('00:03:00:00');
$tc->setFrameCount(360)->toString();
// 00:00:15:00

Static Methods

frameCountFromTimecode($time, $frameRate = null, $dropFrame = null)

Returns the frame count from a time.

  • $time: String time as string to calculate.
  • $frameRate: float frame rate to calculate the timecode.
  • $dropFrame: bool indicates if is drop frame.
  • return: int returns the frame count

fromSeconds($seconds, $frameRate = null, $dropFrame = null)

Instantiate a new object from seconds instead of timecode/framecount.

  • $seconds: int seconds to convert
  • $frameRate: float frame rate to calculate the timecode.
  • $dropFrame: bool indicates if is drop frame.
  • return: Timecode Returns the newly created object
$tc = Timecode::fromSeconds(15);
$tc->toString();
// 00:00:15:00

setDefaultFrameRate($frameRate)

Change default frame rate to instantiate objects with.

  • $frameRate: float New default frame rate.
$tc = newTimecode();
$tc->getFrameRate();
// 24
Timecode::setDefaultFrameRate(25);
$tc2 = newTimecode();
$tc2->getFrameRate();
// 25

setDefaultDropFrame($dropFrame)

Change default drop frame to instantiate objects with.

  • $dropFrame: float New default drop frame.
$tc = newTimecode();
$tc->getDropFrame();
// false
Timecode::setDefaultDropFrame(true);
$tc2 = newTimecode();
$tc2->getDropFrame();
// true

Contributing

All contribution is welcome, please feel free to open tickets and pull requests.

License

MIT.

About

Easily deal with Timecode SMPTE format in PHP

Topics

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages