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

This page is a translated version of the page Extension:TimedMediaHandler and the translation is 92% complete.
Outdated translations are marked like this.
Справка по расширениям MediaWiki
TimedMediaHandler
Статус релиза: стабильно
Реализация Медиафайлы, API
Описание Обеспечивает встроенную поддержку для транскодирования WebM, Ogg Theora, Vorbis, MP3, Speex и Timed Text
Автор(ы) Michael Dale, Jan Gerber, Tim Starling, James Heinrich, Brooke Vibber, Derk-Jan Hartman
Последняя версия 0.6.0
Политика совместимости Снэпшоты выходят вместе с MediaWiki. Мастер не имеет обратной совместимости.
MediaWiki >= 1.43
Изменения в БД Да
Таблицы transcode
Лицензия GNU General Public License 2.0 или позднее
Скачать
  • $wgMediaAudioTypes
  • $wgMediaVideoTypes
  • $wgWaitTimeForTranscodeReset
  • $wgTmhEnableMp4Uploads
  • $wgUseFFmpeg2
  • $wgEnableTranscode
  • $wgTranscodeSoftSizeLimit
  • $wgTmhPriorityResolutionThreshold
  • $wgFFmpegVP9RowMT
  • $wgEnableIframeEmbed
  • $wgParserTestMediaHandlers
  • $wgTranscodeBackgroundSizeLimit
  • $wgTranscodeBackgroundTimeLimit
  • $wgEnabledAudioTranscodeSet
  • $wgTmhSoundfontLocation
  • $wgEnabledTranscodeSet
  • $wgMinimumVideoPlayerSize
  • $wgFFmpegThreads
  • $wgTmhFluidsynthLocation
  • $wgTranscodeBackgroundMemoryLimit
  • $wgTmhFileExtensions
  • $wgFFmpegLocation
  • $wgTmhPriorityLengthThreshold
  • $wgTimedTextForeignNamespaces
  • $wgTimedTextNS
  • transcode-reset
  • transcode-status
Ежеквартальные загрузки 193 (Ranked 29th)
Использование общедоступными вики 1,290 (Ranked 218th)
Переведите расширение TimedMediaHandler, если оно доступно на translatewiki.net
Проблемы Открытые задачи · Сообщить об ошибке

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

О новых и предстоящих разработках в 2022 см. Extension:TimedMediaHandler/2022 work.

Общий обзор

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

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

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

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

[[File:Video.ogv]]
Отображать видео в его номинальном размере. Отображает неподвижное изображение из середины, с кнопкой воспроизведения, чтобы начать воспроизведение во встроенном плеере.
[[File:Audio.oga]]
Показать заполнитель для звуковых файлов, с кнопкой воспроизведения, чтобы начать воспроизведение во встроенном плеере. The player will appear inline or as a pop-up if the audio file has closed captioning/subtitles.
[[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


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

Пример видеоплеера
Пример аудиоплеера

[[File:Videoonwikipedia.ogv|300px|thumb|...]]
[[File:example.ogg|thumb|...]]
[[File:example.ogg|30px]]
[[File:example.ogg]]

Плеер работает в большинстве современных браузеров (посмотрите таблицу совместимостей 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, используя:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/TimedMediaHandler
  • Если и только если устанавливаете из git, запустите Composer для установки зависимостей PHP, запустив composer install --no-dev в каталоге расширений. (Смотрите задача T173141 о возможных осложнениях.)
  • Добавьте следующий код в конце вашего файла LocalSettings.php :
    wfLoadExtension( 'TimedMediaHandler' );
    $wgFFmpegLocation = '/usr/bin/ffmpeg'; // Самый распространенный путь к ffmpeg в Linux
    
  • Выполните скрипт обновления, который автоматически создаст необходимые таблицы, используемые расширением.
  • Настройте, как вам требуется.
  • Возможно, вам потребуется увеличить разрешенный объем памяти в $wgMaxShellMemory .
  •   Готово – Перейдите на страницу 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 embedded 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;

// Exclude transcoding jobs from the default job runner because they take very long to complete
$wgJobTypesExcludedFromDefaultQueue[] = 'webVideoTranscode';
$wgJobTypesExcludedFromDefaultQueue[] = 'webVideoTranscodePrioritized';

// The total amount 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 = [ 'commonswiki' => 102 ];
$wgTimedTextForeignNamespaces = [];

/**
* 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 a 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, it can be set to true
$wgUseFFmpeg2 = false;

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

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

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

$wgJobTypesExcludedFromDefaultQueue[] = 'webVideoTranscode';
$wgJobTypesExcludedFromDefaultQueue[] = 'webVideoTranscodePrioritized';

Setup dedicated jobrunners and request running the jobs by the --type argument:

php ./maintenance/run.php runJobs --type webVideoTranscode
php ./maintenance/run.php runJobs --type webVideoTranscodePrioritized

It is very important to run these tasks as the webserver user.

A single transcode job for a video can easily take an hour or longer, so ensure the commands have enough time and CPU to run.

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

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

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

apt install ffmpeg

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

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

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

Этот раздел нужно расширить

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

ffmpeg – не удалось сопоставить сегмент из общего объекта
Вам нужно увеличить разрешенную память в $wgMaxShellMemory .
Класс 'getID3' не найден
Вам необходимо установить PHP-зависимости расширения с помощью Composer, см. раздел по установке.
Нераспознанная опция 'max_muxing_queue_size'
Возможно, вы используете ffmpeg 2. Вам нужно добавить $wgUseFFmpeg2 = true; к вашему LocalSettings.php.
Нераспознанная опция 'max_muxing_queue_size'
Возможно, вы используете ffmpeg 2. Вам нужно добавить $wgUseFFmpeg2 = true; к вашему LocalSettings.php.
[exception] […] /index.php?title=Special:Upload Error: Call to undefined method FSFile::getLocalRefPath()
Данное расширение несовместимо с Extension:EmbedVideo . Удалите его. Вам также может потребоваться убедиться, что вы правильно выполнили шаги composer.

See also