== TimedMediaHandler ==

This extension provides a media handler for the Ogg, WebM, mp4 container format.
When enabled, a player will be automatically embedded in the file description
page, or any wiki page while still using the same syntax as for images.

* Broad support for input file formats
* Transcoder to make video at web resolutions when embedding clips in a page
* include support for timed Text per the w3c "track" recommendation
* use embedPlayer mwEmbed javascript module for playback

To install this extension, add the following to the end of your
LocalSettings.php:

  // TimedMediaHandler
  wfLoadExtension( 'TimedMediaHandler' );


== Updates in 2018 ==

Ogg Theora (.ogv) video output has been removed due to ongoing issues with
ffmpeg2theora and libtheora packaging. WebM is now be used as the preferred
royalty-free video output by default. Ogg files are still supported, but
videos will be transcoded to WebM.

If your LocalSettings.php used one of the WebVideoTranscode::ENC_OGV_160P etc
constants, you may need to remove them after updating to a current version.

The $wgEnabledTranscodeSet and $wgEnabledAudioTranscodeSet config variables
have changed! If you have manually configured them in LocalSetings.php, you
MUST update them:

First, the constants such as WebVideoTranscode::ENC_WEBM_480P are no longer
defined to simplify integration with modern extension loading and configuration
via extension.json. Instead, use the string values such as '480p.webm'.

Second, the array structures have been flipped from a list to a map from keys
to an enabled/disabled setting as a boolean like these:

  $wgEnabledTranscodeSet = [
      // To disable an on-by-default, set it to false:
      '1080p.webm' => false,
      // To enable an off-by-default, set it to true:
      '1440p.vp9.webm' => true,
  ];

or item-by-item:

  // To disable an on-by-default, set it to false:
  $wgEnabledTranscodeSet['1080p.webm'] = false;
  // To enable an off-by-default, set it to true:
  $wgEnabledTranscodeSet['1440p.vp9.webm'] = true;

Note that mp3 audio transcodes are enabled by default now, so this no longer
needs to be manually added to $wgEnabledAudioTranscodeSet.

== Running Transcodes ==

Transcoding a video to another resolution or format takes a good amount which
prevents that processing to be handled as a web service. Instead, the extension
implements an asynchronous job, named webVideoTranscode, which you must be
running regularly as your web server user.

The job can be run using the MediaWiki maintenance/runJobs.php utility (do not
forget to su as a webserver user):

  php runJobs.php --type webVideoTranscode --maxjobs 1
  php runJobs.php --type webVideoTranscodePrioritized --maxjobs 1


== Kaltura HTML5 player library ==

TimedMediaHandler uses the Kaltura HTML5 player library for video playback, it
relies on the <video> element as well as JavaScript.

For more information about the player library visit:
  http://www.html5video.org/kaltura-player/docs


== ffmpeg ==

We use ffmpeg for two purposes:
 - creating still images of videos (aka thumbnails)
 - transcoding between WebM, Ogg and/or H.264 videos

Wikimedia currently uses ffmpeg as shipped in Debian 9.
For best experience use that or any later release from http://ffmpeg.org

On Ubuntu/Debian:
  apt-get install ffmpeg

You can also build ffmpeg from source.
Guide for building ffmpeg with H.264 for Ubuntu:
https://ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuide

Some old versions of FFmpeg had a bug which made it extremely slow to seek in
large theora videos in order to generate a thumbnail.  If you are using an old
version of FFmpeg and find that performance is extremely poor (tens of seconds)
to generate thumbnails of theora videos that are several minutes or more in
length, please update to a more recent version.

In MediaWiki configuration, after the require line in LocalSettings.php, you
will have to specify the FFmpeg binary location with:

    $wgFFmpegLocation = '/path/to/ffmpeg';

Default being `/usr/bin/ffmpeg`.


== oggThumb ==

We use oggvideotools for creating still images of videos, you will need a copy on your
server.

Set the oggThumb binary location with:

    $wgOggThumbLocation = '/path/to/oggThumb';

Download oggThumb from: http://dev.streamnik.de/oggvideotools.html

== PEAR File_Ogg ==

Tim Starling, a Wikimedia developer, forked the PEAR File_Ogg package and
improved it significantly to support this extension.

The PEAR bundle is licensed under the LGPL, you can get information about
this package on the pear webpage:

  http://pear.php.net/package/File_Ogg

== getID3 ==

getID3 is used for metadata of WebM files.

getID3() by James Heinrich <info@getid3.org>
available at http://getid3.sourceforge.net
or http://www.getid3.org/

getID3 code is released under the GNU GPL:
http://www.gnu.org/copyleft/gpl.html
