Extension: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 とともにリリースされるスナップショット。 master には後方互換性がありません。 |
データベースの変更 | はい |
テーブル | transcode |
ライセンス | GNU 一般公衆利用許諾書 2.0 以降 |
ダウンロード | |
|
|
|
|
|
|
四半期ごとのダウンロード数 | 171 (Ranked 34th) |
使用中の公開ウィキ | 1,290 (Ranked 218th) |
translatewiki.net で翻訳を利用できる場合は、TimedMediaHandler 拡張機能の翻訳にご協力ください | |
問題点 | 未解決のタスク · バグを報告 |
TimedMediaHandler拡張機能を使用すると、画像ファイルと同じ構文を使用して、ウィキページにオーディオおよびビデオファイルを表示できます。 VideoJS プレーヤーが含まれています。 字幕やキャプション (別名 Timed Text) や複数の WebM と他の派生物間のリアルタイム ストリームの切り替えなどの機能があります。 TMH サーバー サイドのサポートには、HTML5 の音声と動画、複数のトランスコード プロファイルをアップロードするオプション、Ogg 動画と WebM 動画のためのメタデータ構文解析、トランスコード ジョブのスケジューリングのための MediaWiki の jobQueue システムが組み込まれています。
2022年以降の開発の継続ならびに新規は、Extension:TimedMediaHandler/2022 workをご参照ください。
機能の概要
プレーヤーの詳細:VideoJS プレーヤーをご参照ください。
字幕システムの機能は、Commons:Timed Textページをご参照ください。
構文の概要
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つの数字が秒単位でオフセットとしてとられます。 HH:MM:SSを使用することもできます。例えば、1:02:22は動画の1時間2分22秒となります。 小数の秒に対応しています (ただし、ウィキメディアのウィキ群では破損: phab:T228467)。
- [[File:Video.ogg|start=1:25]]
- Temporal media fragments は、動画の1分25秒から始まるビデオクリップを表示します。 1つの数値が秒単位でオフセットとしてとらえられる。 フォーム
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:Videoonwikipedia.ogv|300px|thumb|...]]
[[File:example.ogg|thumb|...]]
[[File:example.ogg|30px]]
[[File:example.ogg]]
プレーヤーは多くのモダン ブラウザーで動作します (MediaWiki のサポート マトリックスを参照)。 特にiOSでは、モバイルサポートには問題があります。
TimedMediaHandler には、Safari、Internet Explorer 10/11、Microsoft Edge ブラウザーで動作する Ogg 音声/動画用の JavaScript 互換シム (shim) が含まれています。
MediaWikiのサードパーティユーザーは、Safari/IE/Edgeでのネイティブビデオおよび音声再生のためにMP4 H.264/AACサポートを手動で有効にすることもできますが、これらのフォーマットを使用する場合、インターネット放送用のMPEG-LAからの特許ライセンスが必要になる場合があります。
インストール
WebM へのエンコードに対応するためには、ffmpeg の最新版が必要です (VP9 の最新版で)。
- ダウンロードして、ファイルを
extensions/
フォルダー内のTimedMediaHandler
という名前のディレクトリ内に配置します。
開発者とコード寄稿者は、上記の代わりに以下を使用してGitからインストールします:cd extensions/
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/TimedMediaHandler - Gitでのインストールの場合のみ、PHPの依存関係をインストールするためComposerを実行します。 (合併症の可能性についてはT173141を参照。)
- 以下のコードを LocalSettings.php ファイルの末尾に追加します:
wfLoadExtension( 'TimedMediaHandler' ); $wgFFmpegLocation = '/usr/bin/ffmpeg'; // Linuxで最も一般的なffmpegのパス
- 更新スクリプトを実行します。このスクリプトは、この拡張機能が必要とするデータベーステーブルを自動的に作成します。
- 必要に応じて設定します。
- $wgMaxShellMemory で許容メモリを増やす必要があるかもしれません。
- 完了 – ウィキの「Special:Version」に移動して、拡張機能が正しくインストールされたことを確認します。
この拡張機能は、サポートされているファイルタイプ(mp4を除く)を自動的に$wgFileExtensions に追加するので、手動でビデオファイルタイプを追加する必要はありません。
そのため、インストール後に拡張機能のあるディレクトリ(例:"../extensions/TimedMediaHandler/")に移動してcomposer install --no-dev
を、またはアップデート時にcomposer update --no-dev
を実行してください。
お勧めの代替の手順として、ご利用のwikiのルートディレクトリの「composer.local.json」内に、下記の例のような"extensions/TimedMediaHandler/composer.json"
という行を追加します。
{
"extra": {
"merge-plugin": {
"include": [
"extensions/TimedMediaHandler/composer.json"
]
}
}
}
ウィキペディアのメディアエンコードオプションの比較
2018年現在、WikimediaのサイトではVP9を使用しています。
帯域の階層ごとにソートされています:
ビットレート | Mbit/秒 | 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
はエンコーディング ジョブの実行と出力の保存を可能にするために十分な大きさであることを確認してください。既定の値は低すぎる可能性があります。
トランスコードジョブの実行
トランスコード ジョブはリソースを大量に消費するため、通常のジョブ キューの一部としては実行すべきではありません (タスク T29336 参照)。
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.
エンコードノード
多くの動画をトランスコードするために、マスターDBに接続し、ファイルストアに直接アクセスする複数のエンコーディングノードを実行したい場合があります。ffmpeg をインストールする必要があります。
DebianおよびUbuntuでの最小限のインストール
apt install ffmpeg
さらに、これをLocalSettings.php に追加します(Devuan ASCII (Archived 2018-09-23 at the Wayback Machine)のみでテスト済み)。
$wgFFmpegLocation = '/usr/bin/ffmpeg';
トラブルシューティング
Please note that versions of TimedMediaHandler before MediaWiki 1.38 did not work with PostgreSQL. T157424 を参照してください。
ffmpeg
– 共有オブジェクトからのセグメントのマッピングに失敗しました。- $wgMaxShellMemory で許容メモリを増やす必要があります。
- クラス'getID3'が見つかりません
- Composer を使用して、拡張機能の PHP 依存関係をインストールする必要があります。インストールの節を参照してください。
- 未認識オプション'max_muxing_queue_size'
- ffmpeg 2を使用している可能性があります。
LocalSettings.php
に$wgUseFFmpeg2 = true;
を追加する必要があります。 - 未認識オプション'max_muxing_queue_size'
- ffmpeg 2を使っていませんか。 ご利用の
LocalSettings.php
に$wgUseFFmpeg2 = true;
の追加が必要です。 - [exception] […] /index.php?title=Special:Upload Error: Call to undefined method FSFile::getLocalRefPath()
- この拡張機能はExtension:EmbedVideo とは互換性がありません。 アンインストールします。 もう一つ、composer のステップを適切に処理したかどうか確かmてください。
関連項目
この拡張機能は 1 つ以上のウィキメディアのプロジェクトで使用されています。 これはおそらく、この拡張機能が安定していて高いトラフィックのウェブサイトでも十分に動作することを意味します。 この拡張機能がインストールされている場所を確認するには、ウィキメディアの設定ファイル CommonSettings.php および InitialiseSettings.php 内で、この拡張機能の名前を探してください。 特定のウィキにインストールされている拡張機能の完全な一覧は、そのウィキの Special:Version ページにあります。 |
この拡張機能は以下のウィキ ファーム/ウィキ ホスト/パッケージに含まれています: これは正式な一覧ではありません。 一部のウィキ ファーム/ウィキ ホスト/パッケージは、ここに記載されていなくてもこの拡張機能を含んでいる場合があります。 必ずご利用のウィキ ファーム、ウィキ ホスト、バンドルで確認してください。 |