Extension:TimedMediaHandler

This page is a translated version of the page Extension:TimedMediaHandler and the translation is 95% complete.
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 とともにリリースされるスナップショット。 master には後方互換性がありません。
MediaWiki >= 1.43
データベースの変更 はい
テーブル transcode
ライセンス GNU 一般公衆利用許諾書 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
四半期ごとのダウンロード数 185 (Ranked 32nd)
使用中の公開ウィキ 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 で導入)
廃止予定
構文語noiconnoplayerは非推奨であり、機能しない。 キーワード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 に追加するので、手動でビデオファイルタイプを追加する必要はありません。

この拡張機能をダウンロードした後、Composer が必要ですのでご注意ください。

そのため、インストール後に拡張機能のあるディレクトリ(例:"../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てください。

関連項目