Extension:定时媒体处理程序
![]() 发行状态: 稳定版 |
|
---|---|
![]() |
|
实现 | 媒体, API |
描述 | 提供对于服务器端转码、WebM、OGG Theora、Vorbis、Speex语音、以及定时文本的集成支持 |
作者 | Michael Dale, Jan Gerber, Tim Starling, James Heinrich, Brooke Vibber, Derk-Jan Hartman |
最新版本 | 0.6.0 |
兼容性政策 | 快照跟随MediaWiki发布。 master分支不向后兼容。 |
数据库更改 | 是 |
表 | transcode |
许可协议 | GNU通用公眾授權條款2.0或更新版本 |
下載 | |
|
|
|
|
|
|
前往translatewiki.net翻譯TimedMediaHandler扩展 | |
問題 | 开启的任务 · 报告错误 |
TimedMediaHandler扩展可讓您使用與圖片文件相同的語法在Wiki頁面中顯示音頻和視頻文件。 它包括有VideoJS Player。 它支持翻譯字幕和隱藏字幕(又稱定時文本)以及在多個WebM和其他衍生工具以及許多其他功能之間的實時串流切換。 TMH服務器端支持包括用於上傳HTML5音頻和視頻的選項,用於傳遞內容的多個轉碼配置文件,MIDI文件的回放,用於Ogg和WebM視頻的元數據解析,以及與MediaWiki的工作队列系統集成以调度轉碼作業。
有關 2022 年及以後的新發展和即將推出的功能,請參閱 Extension:TimedMediaHandler/2022 work。
功能预览
關於播放器的部分,請參照:VideoJS Player。
關於翻譯字幕系統的功能,查看Commons:Timed Text页面。
语法简介
在image embed syntax基础上,Timed Media Handler支持:
- [[File:Video.ogv]]
- 以原始尺寸顯示影片。從中間點顯示靜止圖像,並附有播放按鈕,可啟動彈出式影片播放器。
- [[File:Audio.oga]]
- 用一个播放按钮为声音文件显示出一个占位符。 如果音頻文件帶有隱藏字幕,播放器將以內嵌或彈出窗口的形式顯示。
- [[File:Midi.mid]]
- 根據MIDI文件中的音樂指令生成數字音頻,然後顯示嵌入式音頻播放器以播放此音頻。
- [[File:Video.ogv|thumb]]
- 在一个浮动的缩略图裏显示视频。
<gallery>File:Video.ogv</gallery>
- 在一个图片库(image gallery)裏嵌入视频(每一个截图都会弹出一个用于完整视频的对话框)。
- [[File:Video.ogg|thumbtime=1:25]]
- 用一個在1分25秒的帧画面作为视频的占位符的图形。若只給一个单独的数字将被視為是秒数的一個偏移量。 也可以使用HH:MM:SS,例如,1:02:22會是视频的1小时2分22秒。 有支持浮點的秒數(但在維基媒體的維基中無法正常使用:phab:T228467)。
- [[File:Video.ogg|start=1:25]]
- “短暫媒體片段”顯示出視頻從1分25秒開始的視頻片段。 若只給一个单独的数字将被視為是秒数的一個偏移量。 您還可以添加以
end=1:30
為格式的結束時間,這樣就會播放從1:25到1:30的5秒鐘片段。 如果未提供thumbtime,則將使用開始時間作為顯示的縮略圖。 也可以使用HH:MM:SS,例如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:Big Buck Bunny 4K.webm|300px|thumb|...]]
[[File:example.ogg|thumb|...]]
[[File:example.ogg|30px]]
[[File:example.ogg]]
这个播放器在大部分现代浏览器上能够工作(請參閱MediaWiki 的支援矩陣)。 移动端支持情况不一,尤其是在iOS上。
TimedMediaHandler包括用於Ogg音頻/視頻的JavaScript兼容性代碼,可在Safari,Internet Explorer 10/11和Microsoft Edge瀏覽器中使用。
MediaWiki的第三方用戶可能還希望為Safari / IE / Edge中的本地視頻和音頻播放手動啟用MP4 H.264 / AAC支持,但是使用這些格式時,您可能需要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'; // Linux 上最常見的 ffmpeg 路径
- 运行更新脚本,它将自动创建此扩展必须依赖的数据库表。
- 按需求配置。
- 您可能需要增加 $wgMaxShellMemory 中允許的記憶體。
- 完成 – 在您的wiki上导航至Special:Version,以验证已成功安装扩展。
擴充功能會自動將支持的文件類型(mp4 除外)添加到 $wgFileExtensions 中,因此您無需手動添加視頻文件類型。
所以,在从Git安装之后,切换到包含该扩展的目录。例如:"../extensions/TimedMediaHandler/"并运行composer install --no-dev
,或在更新时:composer update --no-dev
。
或者最好将"extensions/TimedMediaHandler/composer.json"
添加到在Wiki根目录下的"composer.local.json"文件中,例如:
{
"extra": {
"merge-plugin": {
"include": [
"extensions/TimedMediaHandler/composer.json"
]
}
}
}
维基百科媒体编码选项的比较
截至 2018 年,維基媒體網站使用 VP9。
按頻寬等級排序:
位元率 | Mbit/s | 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;
// 轉碼進程可用的虛擬記憶體最大容量(以 KB 為單位)
$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
足够大而保证转码工作进行并保存输出。默认值很可能太小了。
进行转码工作
由于转码工作是资源集中型工作,它们不應以常规工作队列的方式运行 (查看 TT29336)。
使用以下命令配置 Localsettings.php
:
$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
以「Web伺服器使用者」身分執行這些任務是非常重要的。
一個視頻的單次轉碼作業很容易就需要一個小時甚至更長時間,因此請確保命令有足夠的時間和CPU資源來執行。
编码节点
为了能够转码许多视频,你可能想要运行多个连接到主数据库并且直接访问你的文件的编码节点。您将需要安装ffmpeg。
在Debian和Ubuntu下的最小安装
apt install ffmpeg
此外,將此添加到您的LocalSettings.php 中(僅針對Devuan ASCII(Archived 2018-09-23 at the Wayback Machine)進行測試):
$wgFFmpegLocation = '/usr/bin/ffmpeg';
Shellbox隔離
出於安全考慮,ffmpeg 在維基媒體的一個使用Shellbox的隔離容器中運行。
如果您想模擬維基媒體的設置,包括其 Debian 版、依存項等,您需要他們的 Docker 映像。
使用$wgShellboxUrls
來配置MediaWiki,使其使用您的Shellbox節點。
當然,您也可以創建自己的自定義的 Docker 映像。
$ docker pull docker-registry.wikimedia.org/wikimedia/mediawiki-libs-shellbox:video
疑難排解
请注意,MediaWiki 1.38 之前的 TimedMediaHandler 版本无法与 PostgreSQL 一起使用。 参见T157424。
ffmpeg
– 無法映射共享物件中的區段- 您需要增加 $wgMaxShellMemory 中允許的記憶體。
- 未找到類別'getID3'
- 您需要使用Composer安裝擴充功能的PHP依存項;請參閱安裝段落。
- 未識別選項 '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()
- 此擴充功能與扩展:嵌入式视频 「不兼容」。 請將它卸載。 您可能還需要確保您正確地完成了composer的步驟。
參見
此扩展用于一个或多个维基媒体项目。 这可能意味着扩展足够稳定、运作足够良好,可以用在这样的高流量的网站上。 请在维基媒体的CommonSettings.php和InitialiseSettings.php配置文件中查找此扩展的名称以查看哪些网站安装了该扩展。 特定wiki上的已安装的扩展的完整列表位于Special:Version页面。 |
此扩展在以下wiki农场/托管网站和/或软件包中提供: 這不是一份權威名單。 即使某些wiki农场/托管网站和/或软件包未在这里列出,它们也可能提供此扩展。 请检查你的wiki农场/托管网站或软件包以确认提供情况。 |