fireworkweb/smpte 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

fireworkweb/smpte

最新稳定版本:1.6.0

Composer 安装命令:

composer create-project fireworkweb/smpte

包简介

Easily deal with Timecode SMPTE format in PHP

README 文档

README

Build Status codecov

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:

use FireworkWeb\SMPTE\Timecode;
use FireworkWeb\SMPTE\Validations;

You can instantiate it directly using new:

// passing frame count
$timecode = new Timecode(360);

// passing a timecode string
$timecode = new Timecode('00:00:01:10');

// passing a Datetime object
$timecode = new Timecode(new \DateTime('01:34:12'));

Or you can use the static helper:

$timecode = Timecode::fromSeconds(10);

Properties

Property Type Description
getFrameCount() int Total number of frames
getHours() int Hours number
getMinutes() int Minutes number
getSeconds() int Seconds number
getFrames() int Frames number
durationInSeconds() int Timecode 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.

(new Timecode(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 = new Timecode('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 = new Timecode('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 = new Timecode('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 = new Timecode('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 = new Timecode('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 = new Timecode('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 = new Timecode('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 = new Timecode('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 = new Timecode('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 = new Timecode();
$tc->getFrameRate();
// 24

Timecode::setDefaultFrameRate(25);

$tc2 = new Timecode();
$tc2->getFrameRate();
// 25

setDefaultDropFrame($dropFrame)

Change default drop frame to instantiate objects with.

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

Timecode::setDefaultDropFrame(true);

$tc2 = new Timecode();
$tc2->getDropFrame();
// true

Contributing

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

License

MIT.

统计信息

  • 总下载量: 31.69k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 7
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 7
  • Watchers: 2
  • Forks: 9
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-11-05