• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

xemle/html5-video-php: ffmpeg wrapper for creating HTML5 videos

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

xemle/html5-video-php

开源软件地址:

https://github.com/xemle/html5-video-php

开源编程语言:

PHP 100.0%

开源软件介绍:

Create HTML5 Videos

ffmpeg wrapper to convert videos to HTML5 compatible formats of MP4, WEBM, and OGG to support all common mobile devices and desktop browsers. Converted videos can be used with videojs or flowplayer.

With different ffmpeg versions, their specific option syntax and different devices it is tricky to convert videos to HTML5 compatible videos. This wrapper library makes HTML5 video conversion as easy as possible.

To support most devices and browser MP4, WEBM, and OGG video container are supported. See Video on the Web for further details.

To support also Apples iDevices like iPod, iPhone, and iPad following settings are used for MP4 format (see Video Encoding, Flowplayer.org):

  • Baseline Profile
  • Level 3.0
  • 1 reference frame

Further qt-faststart is used to move MP4 meta data from end to the beginning of the MP4 file to support fast playback while downloading the MP4 video.

Quickstart

$config = array(
  'ffmpeg.bin' => '/usr/bin/ffmpeg',
  'qt-faststart.bin' => '/usr/bin/qt-faststart',
);
$html5 = new Html5Video\Html5Video($config);

$html5->convert('source.avi', 'html5-720p.mp4', '720p-sd');

Requirements

  • ffmpeg with x264 support
  • qt-faststart (comes with ffmpeg)

Following ffmpeg versions from 0.6 are supported

Install ffmpeg on Ubuntu

$ sudo apt-get install ffmpeg x264

Windows builds

Download latest ffmpeg from Zeranoe FFmpeg builds and qt-faststart from Windows qt-faststart Builds

Installing

html5-video-php uses composer

$ curl -sS https://getcomposer.org/installer | php

Usage

Include html5-video-php in your composer.json file

{
  "require": {
    "xemle/html5-video-php": "1.0.*"
  }
}

Create a H264 video

$config = array(
  'ffmpeg.bin' => '/usr/bin/ffmpeg',
  'qt-faststart.bin' => '/usr/bin/qt-faststart',
);
$html5 = new Html5Video\Html5Video($config);

// target format is the file extension of $targetVideo. One of mp4, webm, or ogg
$profileName = '720p-hd'; // other profiles are listed in src/Html5Video/profiles
$html5->convert($srcVideo, $targetVideo, $profileName);

Usage CLI

You can also you the command line interface bin/Html5VideoConverter.php to convert HTML5 videos:

$ php bin/Html5VideoConverter.php input.avi output.mp4 720p-sd

Profiles

There are different video profiles to create different video sizes:

  • 1080p-hd
  • 1080p-sd
  • 720p-hd
  • 720p-sd
  • 480p-hd
  • 480p-sd
  • 360p-hd
  • 360p-sd
  • 240p-hd
  • 240p-sd

hd stands for high definition and sd for standard definition profiles.

The profile are simple json definition files like

{
  "video": {
    "width":1280,
    "height": 720,
    "bitrate": "5000k",
    "framerate": 30
  },
  "audio": {
    "bitrate": "160k",
    "samplingrate": 44100
  }
}

You can add your on definitions and add them to the $config variable:

$config = array(
  'profile.dirs' => array('YOUR PROFILE PATH')
);

API

Html5Video($config = array(), $process = null, $cache = null)

Constructor

$config has following optional options:

  • ffmpeg.bin: Binary of ffmpeg. Default is ffmpeg
  • qt-faststart.bin: Binary of qt-faststart. Default is qt-faststart
  • profile.dirs: List of profile directories
  • videoContainers: Additional video container formats. Array with videoEncoder and audioEncoder settings. Eg 'videoContainers' => array('flv' => array('videoEncoder' => 'flv', 'audioEncoder' => 'mp3'))
  • timelimit: Time limit in seconds. 0 for no time. Default is 0

$process: (Optional) Process object to call external ffmpeg process. See Html5Video/Process/IProcess.php $cache: (Optional) Cache object to store ffmpeg settings. See Html5Video/Cache/ICache.php

Html5Video::convert($src, $dst, $profileName, $options = array())

Convert given video file to HTML5 compatible format

Options are:

  • width: (int) Width of source video
  • height: (int) Height of source video
  • audio: (bool) Enable/disable audio track
  • targetFormat: (string) Target format

If width and height are given (recommended), Html5Video does not read source video file to calculate resize sizes.

(array) Html5Video::getVideoInfo($src)

Get basic information about video file. Values contain

  • width: Width of video
  • height: Height of video
  • duration: Duration of video in seconds
  • videoStreams: Number of video streams
  • audioStreams: Number of audio streams
(array) Html5Video::listProfiles()

Get list of available profile names

(object) Html5Video::getProfile($name)

Get profile data

(array) Html5Video::getVersion()

Get current ffmpeg version as array

(array) Html5Video::getEncoders()

Get list of supported encoders

Testing

For testing phpunit is used. Run

$ phpunit

in html5-video-php.

License

MIT License. See LICENSE file




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap