Расширение:TimedMediaHandler

From mediawiki.org
This page is a translated version of the page Extension:TimedMediaHandler and the translation is 100% complete.
Справка по расширениям MediaWiki
OOjs UI icon advanced-invert.svg
TimedMediaHandler
Статус релиза: стабильно
Screenshot of TimedMediaHandler using VideoJS with Big Buck Bunny.png
Реализация Медиафайлы, API
Описание Обеспечивает встроенную поддержку для транскодирования WebM, Ogg Theora, Vorbis, MP3, Speex и Timed Text
Автор(ы) Michael Dale, Jan Gerber, Tim Starling, James Heinrich, Brion Vibber, Derk-Jan Hartman
Последняя версия 0.6.0
Политика совместимости Snapshots releases along with MediaWiki. Master is not backward compatible.
MediaWiki >= 1.38.0
Изменения в БД Да
Таблицы transcode
Лицензия GNU General Public License 2.0 или позднее
Скачать
  • $wgMediaAudioTypes
  • $wgMediaVideoTypes
  • $wgWaitTimeForTranscodeReset
  • $wgEnableNiceBackgroundTranscodeJobs
  • $wgTmhEnableMp4Uploads
  • $wgUseFFmpeg2
  • $wgEnableTranscode
  • $wgTmhPriorityResolutionThreshold
  • $wgFFmpegVP9RowMT
  • $wgEnableIframeEmbed
  • $wgParserTestMediaHandlers
  • $wgTranscodeBackgroundSizeLimit
  • $wgTranscodeBackgroundTimeLimit
  • $wgEnabledAudioTranscodeSet
  • $wgTmhSoundfontLocation
  • $wgTmhFileExtensions
  • $wgTimedTextForeignNamespaces
  • $wgMinimumVideoPlayerSize
  • $wgFFmpegThreads
  • $wgTmhFluidsynthLocation
  • $wgTranscodeBackgroundMemoryLimit
  • $wgEnabledTranscodeSet
  • $wgFFmpegLocation
  • $wgTmhPriorityLengthThreshold
  • $wgTimedTextNS
  • $wgTranscodeBackgroundPriority
Переведите расширение TimedMediaHandler, если оно доступно на translatewiki.net
Проблемы Открытые задачи · Сообщить об ошибке

Расширение TimedMediaHandler позволяет отображать аудио и видео файлы на страницах Вики, используя тот же синтаксис, что и для файлов изображений. Он включает HTML5 плеер [$kaltura Kaltura] и экспериментальный плеер VideoJS. Есть поддержка субтитров и титров (подобно Синхронизированному тексту) и возможность в реальном времени переключаться между несколькими WebM и другими производными и многие другие функции. TMH поддержка на стороне сервера включает в себя опции для загрузки аудио и видео HTML5, несколько профилей транскодирования для доставки контента, парсинга метаданных OGG и WebM видео и интегрируется с системой jobQueue MediaWiki для планирования заданий по транскодированию.

For new and upcoming developments in 2022, see Extension:TimedMediaHandler/2022 work.

Пожалуйста, обратите внимание, что TimedMediaHandler в настоящее время не работает с PostgreSQL. Посмотрите задача T157424.

Общий обзор

О плеере смотрите на странице VideoJS Player.

Функциональность системы субтитрования смотрите на странице Викисклад:Синхротекст.

Синопсис синтаксиса

В дополнение к image embed syntax, Timed Media Handler поддерживает:

[[File:Video.ogv|File:Video.ogv]]
Отображать видео в его номинальном размере. Отображает неподвижное изображение из середины, с кнопкой воспроизведения, чтобы начать воспроизведение во встроенном плеере.
[[File:Audio.oga|File:Audio.oga]]
Показать заполнитель для звуковых файлов, с кнопкой воспроизведения, чтобы начать воспроизведение во встроенном плеере.
[[File:Midi.mid]]
Генерировать цифровое аудио из музыкальных инструкций в MIDI-файле и показать встроенный плеер для проигрывания этого аудиофайла.
[[File:Video.ogv|thumb]]
Показать видео в плавающем окне в миниатюре
<gallery>File:Video.ogv</gallery>
Показать видео встроенным в галерею изображений (каждый клип будет представлен в виде всплывающего диалогового окна полноразмерного плеера)
[[File:Video.ogg|thumbtime=1:25]]
Используйте кадр с 1 минуты 25 секунд видео в качестве изображения предпросмотра для видео. Одно число принимается за смещение в секундах. Можно также использовать ЧЧ:ММ:СС, например. 1:02:22 будет 1 час, 2 минуты и 22 секунды видео. Секунды с плавающей запятой поддерживаются (но не работают в вики Викимедиа: phab:T228467).
[[File:Video.ogg|start=1:25]]
Временные медиафрагменты отображают видеоклип, начиная с 1 минуты 25 секунд видео. Одно число принимается за смещение в секундах. Вы также можете указать время окончания в форме end=1:30. Это приведет к воспроизведению 5-секундного клипа с 1:25 до 1:30. Если время эскиза не указано, для отображаемого эскиза будет использоваться время начала. Можно также использовать ЧЧ:ММ:СС, например. 1:02:22 будет 1 час, 2 минуты и 22 секунды видео.
start= и end= также можно использовать в качестве параметров запроса в URL-адресе страницы видеофайла.
[[File:Video.ogg|muted]]
Запустите медиа с отключенным звуком. (введено в 1.39)
[[File:Video.ogg|loop]]
Зацикливать видео непрерывно. (введено в 1.39)
Устаревшие
Синтаксические слова noicon и noplayer устарели и не работают. Ключевое слово disablecontrols, скорее всего, будет объявлено устаревшим. (Посмотрите задача T135537) Он принимает список разделенных запятыми любых из следующих значений: options, timedText, fullscreen

Поддержка клиентов

Пример видеоплеера
Пример аудиоплеера
Расширенный аудиоплеер с полоской заполнения

Плеер работает в большинстве современных браузеров (посмотрите таблицу совместимостей MediaWiki). Поддержка всех мобильных устройств, особенно на iOS

TimedMediaHandler включает регулировку сомвестимости с JavaScript для OGG аудио/видео, которая работает в браузерах Safari, Internet Explorer 10/11 и Microsoft Edge.

Сторонние пользователи MediaWiki могут также вручную включить поддержку MP4 H.264/AAC для собственного воспроизведения видео и аудио в Safari/IE/Edge, но при использовании этих форматов вам может потребоваться патентная лицензия от MPEG-LA для интернет-вещания.

Установка

Вам понадобится последняя версия ffmpeg для поддержки кодирования для WebM (с последней версией VP9).

  • Скачайте и распакуйте файл(ы) в папку с названием TimedMediaHandler в вашей папке extensions/.
  • Если и только если устанавливаете из git, запустите Composer для установки зависимостей PHP, запустив composer install --no-dev в каталоге расширений. (Смотрите задача T173141 о возможных осложнениях.)
  • Добавьте следующий код внизу вашего LocalSettings.php :
    wfLoadExtension( 'TimedMediaHandler' );
    $wgFFmpegLocation = '/usr/bin/ffmpeg'; // Самый распространенный путь к ffmpeg в Linux
    
  • Выполните скрипт обновления, который автоматически создаст необходимые таблицы, используемые расширением.
  • Настройте, как вам требуется.
  • Возможно, вам потребуется увеличить разрешенный объем памяти в $wgMaxShellMemory .
  • Yes Готово – Перейдите на страницу Special:Version на своей вики, чтобы удостовериться в том, что расширение успешно установлено.

Расширение автоматически добавит поддерживаемые типы файлов (кроме mp4) в $wgFileExtensions , поэтому вам не нужно вручную добавлять типы видеофайлов.

После загрузки этого расширения, обратите внимание, что для этого требуется Composer .

Итак, после установки перейдите в каталог, содержащий расширение, например. "../extensions/TimedMediaHandler/" и запустите composer install --no-dev или при обновлении: composer update --no-dev.

Альтернативно, а также предпочтительно добавить строку "extensions/TimedMediaHandler/composer.json" в файл "composer.local.json" в корневой каталог вашей вики, например:

{
	"extra": {
		"merge-plugin": {
			"include": [
				"extensions/TimedMediaHandler/composer.json"
			]
		}
	}
}

Сравнение вариантов кодирования мультимедиа Википедии

По состоянию на 2018 год сайты Викимедиа используют VP9.

Отсортировано по уровню пропускной способности:

Битрейт Мб/с WebM VP8 WebM VP9
Супернизкий 0.08 160p
Очень низкий 0.16 160p 240p
Низкий 0.25 240p 360p
Умеренный 0.5 360p 480p
Средний 1.0 480p 720p
Высокий 2.0 720p 1080p
Очень высокий 4.0 1080p 1440p
Экстра высокий 8.0 2160p

Детальные параметры:

Название 160P 240P 360P 480P 720P 1080P 160P 240P 360P 480P 720P 1080P 1440P 2160P
Контейнер WebM
Видео Кодировка VP8 VP9
Макс. ширина (в пкс) 288 426 640 854 1280 1920 288 426 640 854 1280 1920 2560 4096
Макс. высота (в пкс) 160 240 360 480 720 1080 160 240 360 480 720 1080 1440 2160
Битрейт (Mbit/s) 0.16 0.25 0.5 1.0 2.0 4.0 0.08 0.16 0.25 0.5 1.0 2.0 4.0 8.0
Аудио Кодировка Vorbis Opus
Каналы 2 (stereo) (pass-through)
Частота дискретизации (Hz) 44100 48000
Качество - 1 2 3 - (default)

Конфигурация

Этот раздел устарел -- пожалуйста, обновите меня

Вот некоторые переменные конфигурации, которые могут быть полезны:

// The minimum size for an embed video player (smaller than this size uses a pop-up player).
$wgMinimumVideoPlayerSize = 200;

// If transcoding is enabled for this wiki (if disabled, no transcode jobs are added and no transcode status is displayed).
// Note if remote embedding an asset we will still check if the remote repo has transcoding enabled and associated flavors
// for that media embed.
$wgEnableTranscode = true;

// The total amout of time a transcoding shell command can take:
$wgTranscodeBackgroundTimeLimit = 3600 * 8;
// Максимальный объем виртуальной памяти, доступный для процессов транскодирования, в КБ
$wgTranscodeBackgroundMemoryLimit = 2 * 1024 * 1024; // 2GB avconv, ffmpeg2theora mmap resources so virtual memory needs to be high enough
// Maximum file size transcoding processes can create, in KB
$wgTranscodeBackgroundSizeLimit = 3 * 1024 * 1024; // 3GB

// Number of threads to use in avconv for transcoding
$wgFFmpegThreads = 1;

// The NS for TimedText (registered on MediaWiki.org)
// https://www.mediawiki.org/wiki/Extension_namespace_registration
// Note commons pre-dates TimedMediaHandler and should set $wgTimedTextNS = 102 in LocalSettings.php
$wgTimedTextNS = 710;

// Set TimedText namespace for ForeignDBViaLBRepo on a per wikiID basis
// $wgTimedTextForeignNamespaces = array( 'commonswiki' => 102 );
$wgTimedTextForeignNamespaces = array();

/**
* Default enabled transcodes
*
* -If set to empty array, no derivatives will be created
* -Derivative keys encode settings are defined in WebVideoTranscode.php
*
* -These transcodes are *in addition to* the source file.
* -Only derivatives with smaller width than the source asset size will be created
* -Regardless of source size at least one WebM and Ogg source will be created from the $wgEnabledTranscodeSet
* -Derivative jobs are added to the MediaWiki JobQueue the first time the asset is uploaded
* -Derivative should be listed min to max
*/
// Starting from 1.31
// All valid string values are listed in the extension's extension.json file 
$wgEnabledTranscodeSet = [
    '160p.webm' => true,
    '240p.webm' => true,
    '360p.webm' => true,
    '480p.webm' => true,
    '720p.webm' => true,
    '1080p.webm' => true,
];

$wgEnabledAudioTranscodeSet = [
	'ogg' => true,   // ogg+vorbis
	'opus' => false, // ogg+opus
	'mp3' => true,   // raw mp3
	'm4a' => false,  // mp4+aac (mp4a.40.5)
];

// If mp3 source assets can be ingested:
$wgTmhEnableMp3Uploads = true;

// If mp4 source assets can be ingested:
$wgTmhEnableMp4Uploads = false;

// If you use ffmpeg 2 can be set it to true
$wgUseFFmpeg2 = false;

Для транскодирования убедитесь, что размер $wgMaxShellMemory, $wgMaxShellTime, $wgMaxShellFileSize достаточен для запуска заданий кодирования и сохранения вывода. Значения по умолчанию, скорее всего, слишком низкие.

Выполнение заданий перекодирования

Поскольку задания на перекодирование являются ресурсоемкими, они не будут выполняться как часть обычной очереди заданий (см. задача T29336). Вместо этого они должны быть запрошены аргументом --type:

php maintenance/runJobs.php --type webVideoTranscode

Если выполнение этой команды приводит к ее зависанию намертво, вам может потребоваться установить $wgTranscodeBackgroundTimeLimit = 0; в LocalSettings.php. См. задача T206957.

Кодирование узлов

Чтобы иметь возможность перекодировать много видео, вы можете запустить несколько узлов кодирования, которые подключаются к главной базе данных и получают прямой доступ к вашему хранилищу файлов. Вам нужно будет установить ffmpeg.

Минимальная установка под Debian и Ubuntu

apt install ffmpeg

Кроме того, добавьте это к своему LocalSettings.php (проверено только для Devuan ASCII (Archived 2018-09-23 at the Wayback Machine)):

$wgFFmpegLocation = '/usr/bin/ffmpeg';

Устранение неисправностей

Этот раздел нужно расширить
ffmpeg – не удалось сопоставить сегмент из общего объекта
Вам нужно увеличить разрешенную память в $wgMaxShellMemory .
Класс 'getID3' не найден
Вам необходимо установить PHP-зависимости расширения с помощью Composer, см. раздел по установке выше.
Нераспознанная опция 'max_muxing_queue_size'
Возможно, вы используете ffmpeg 2. Вам нужно добавить $wgUseFFmpeg2 = true; к вашему LocalSettings.php.