Расширение:TimedMediaHandler
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. Мастер не имеет обратной совместимости. |
Изменения в БД | Да |
Таблицы | transcode |
Лицензия | GNU General Public License 2.0 или позднее |
Скачать | |
|
|
|
|
|
|
Ежеквартальные загрузки | 176 (Ranked 34th) |
Использование общедоступными вики | 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 , поэтому вам не нужно вручную добавлять типы видеофайлов.
Итак, после установки перейдите в каталог, содержащий расширение, например. "../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
Это расширение используется в одном или нескольких проектах Викимедиа. Вероятно, это означает, что расширение стабильно и работает достаточно хорошо, чтобы использоваться такими сайтами с высоким трафиком. Найдите название этого расширения в файлах конфигурации Викимедиа CommonSettings.php и InitialiseSettings.php, чтобы узнать, где оно установлено. Полный список расширений, установленных на конкретной вики, можно увидеть на странице Special:Version wiki. |
Это расширение включено в следующие вики-фермы/хостинги и/или пакеты: Это не исчерпывающий список. Некоторые вики-фермы/хостинги и/или пакеты могут содержать это расширение, даже если они не перечислены здесь. Всегда сверяйтесь со своими вики-фермами/хостингами или комплектами/бандлами для подтверждения. |
- Stable extensions/ru
- Media handling extensions/ru
- API extensions/ru
- GPL licensed extensions/ru
- Extensions in Wikimedia version control/ru
- ArticleContentOnDiff extensions/ru
- ArticleFromTitle extensions/ru
- ArticlePurge extensions/ru
- BeforePageDisplay extensions/ru
- CanonicalNamespaces extensions/ru
- FileDeleteComplete extensions/ru
- FileUndeleteComplete extensions/ru
- FileUpload extensions/ru
- ImageOpenShowImageInlineBefore extensions/ru
- ImagePageAfterImageLinks extensions/ru
- ImagePageFileHistoryLine extensions/ru
- LoadExtensionSchemaUpdates extensions/ru
- MediaWikiPerformAction extensions/ru
- PageDeleteComplete extensions/ru
- PageMoveComplete extensions/ru
- PageSaveComplete extensions/ru
- ParserTestGlobals extensions/ru
- RevisionFromEditComplete extensions/ru
- SkinTemplateNavigation::Universal extensions/ru
- TitleMove extensions/ru
- WgQueryPages extensions/ru
- All extensions/ru
- Extensions requiring Composer with git/ru
- Outdated pages/ru
- Extensions used on Wikimedia/ru
- Extensions included in Canasta/ru
- Extensions included in Fandom/ru
- Extensions included in Miraheze/ru
- Extensions included in WikiForge/ru
- Video player extensions/ru
- Audio player extensions/ru