Extension:TimedMediaHandler

From mediawiki.org
This page is a translated version of the page Extension:TimedMediaHandler and the translation is 94% complete.
MediaWiki 拡張機能マニュアル
OOjs UI icon advanced-invert.svg
TimedMediaHandler
リリースの状態: 安定
Screenshot of TimedMediaHandler using VideoJS with Big Buck Bunny.png
実装 メディア, API
説明 サーバー側のトランスコード、WebM、Ogg Theora、Vorbis、MP3、Speex、Timed Textの統合サポートを提供
作者 Michael Dale, Jan Gerber, Tim Starling, James Heinrich, Brion Vibber, Derk-Jan Hartman
最新バージョン 0.6.0
互換性ポリシー MediaWikiとともにリリースされるスナップショット。 master には後方互換性がありません。
MediaWiki >= 1.38.0
データベースの変更 はい
テーブル transcode
ライセンス GNU 一般公衆利用許諾書 2.0 以降
ダウンロード
  • $wgMediaAudioTypes
  • $wgMediaVideoTypes
  • $wgWaitTimeForTranscodeReset
  • $wgEnableNiceBackgroundTranscodeJobs
  • $wgTmhEnableMp4Uploads
  • $wgUseFFmpeg2
  • $wgEnableTranscode
  • $wgTmhPriorityResolutionThreshold
  • $wgFFmpegVP9RowMT
  • $wgEnableIframeEmbed
  • $wgParserTestMediaHandlers
  • $wgTranscodeBackgroundSizeLimit
  • $wgTranscodeBackgroundTimeLimit
  • $wgEnabledAudioTranscodeSet
  • $wgTmhSoundfontLocation
  • $wgTmhFileExtensions
  • $wgTimedTextForeignNamespaces
  • $wgMinimumVideoPlayerSize
  • $wgFFmpegThreads
  • $wgTmhFluidsynthLocation
  • $wgTranscodeBackgroundMemoryLimit
  • $wgEnabledTranscodeSet
  • $wgFFmpegLocation
  • $wgTmhPriorityLengthThreshold
  • $wgTimedTextNS
  • $wgTranscodeBackgroundPriority
translatewiki.net で翻訳を利用できる場合は、TimedMediaHandler 拡張機能の翻訳にご協力ください
問題点 未解決のタスク · バグを報告

TimedMediaHandler拡張機能を使用すると、画像ファイルと同じ構文を使用して、ウィキページにオーディオおよびビデオファイルを表示できます。 VideoJS プレーヤーが含まれています。 字幕やキャプション (別名 Timed Text) や複数の WebM と他の派生物間のリアルタイム ストリームの切り替えなどの機能があります。 TMH サーバー サイドのサポートには、HTML5 の音声と動画、複数のトランスコード プロファイルをアップロードするオプション、Ogg 動画と WebM 動画のためのメタデータ構文解析、トランスコード ジョブのスケジューリングのための MediaWiki の jobQueue システムが組み込まれています。

For new and upcoming developments in 2022, see Extension:TimedMediaHandler/2022 work.

TimedMediaHandlerは現在、PostgreSQLでは動作しませんのでご注意ください。 タスク T157424 を参照してください。

機能の概要

For the player see: VideoJS Player.

For features of the subtitling system, see Commons:Timed Text page.

構文の概要

Timed Media Handlerは、画像埋め込み構文に加えて、以下の構文もサポートしています。

[[File:Video.ogv|File:Video.ogv]]
動画を公称サイズで表示する。中点からの静止画を表示し、再生ボタンで埋め込みプレーヤーを起動します。
[[File:Audio.oga|File:Audio.oga]]
サウンドファイルのプレースホルダを表示し、埋め込みプレーヤーを開始するための再生ボタンを表示します。
[[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秒となります。 Floating-point seconds are supported (but broken on Wikimedia wikis: 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]]
Start the media with muted audio. (1.39 で導入)
[[File:Video.ogg|loop]]
Loop the video continuously. (1.39 で導入)
廃止予定
構文語noiconnoplayerは非推奨であり、機能しない。 キーワードdisablecontrolsは、おそらく非推奨となります。 (タスク T135537 を参照してください) 以下のいずれかの値をカンマで区切ったリストを取る。 options, timedText, fullscreen

サポートされるブラウザー

動画プレーヤーの例
音声プレーヤーの例
プログレスバーを表示する、より広いオーディオプレーヤー

プレーヤーは多くのモダン ブラウザーで動作します (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でのインストールの場合のみ、PHPの依存関係をインストールするためComposerを実行します。 (合併症の可能性についてはタスク T173141を参照。)
  • 以下のコードを LocalSettings.php の末尾に追加します:
    wfLoadExtension( 'TimedMediaHandler' );
    $wgFFmpegLocation = '/usr/bin/ffmpeg'; // Linuxで最も一般的なffmpegのパス
    
  • 更新スクリプトを実行します。このスクリプトは、この拡張機能が必要とするデータベーステーブルを自動的に作成します。
  • 必要に応じて設定します。
  • $wgMaxShellMemory で許容メモリを増やす必要があるかもしれません。
  • Yes 完了 – ウィキの「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"
			]
		}
	}
}

ウィキペディアのメディアエンコードオプションの比較

As of 2018, Wikimedia sites use 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 embed 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;

// The total amout 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 = array( 'commonswiki' => 102 );
$wgTimedTextForeignNamespaces = array();

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

トランスコーディングの場合、$wgMaxShellMemory, $wgMaxShellTime, $wgMaxShellFileSizeはエンコーディングジョブの実行と出力の保存を可能にするために十分な大きさであることを確認してください。デフォルトの値は低すぎる可能性があります。

トランスコードジョブの実行

トランスコードジョブはリソースを大量に消費するため、通常のジョブキューの一部としては実行されません(タスク T29336参照)その代わり、--type引数で要求する必要があります。

php maintenance/runJobs.php --type webVideoTranscode

このコマンドを実行すると永遠にハングアップする場合は、LocalSettings.phpに$wgTranscodeBackgroundTimeLimit = 0;を設定する必要があるかもしれません。 タスク T206957 を参照してください。

エンコードノード

多くの動画をトランスコードするために、マスターDBに接続し、ファイルストアに直接アクセスする複数のエンコーディングノードを実行したい場合があります。ffmpeg をインストールする必要があります。

DebianおよびUbuntuでの最小限のインストール

apt install ffmpeg

さらに、これをLocalSettings.php に追加します(Devuan ASCII (Archived 2018-09-23 at the Wayback Machine)のみでテスト済み)。

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

トラブルシューティング

この節はさらに説明が必要です
"ffmpeg – 共有オブジェクトからのセグメントのマッピングに失敗しました。"
$wgMaxShellMemory で許容メモリを増やす必要があります。
"クラス'getID3'が見つかりません"
Composer を使用して、拡張機能の PHP 依存関係をインストールする必要があります。上記のインストールセクションを参照してください。
"未認識オプション'max_muxing_queue_size'"
ffmpeg 2を使用している可能性があります。 LocalSettings.php$wgUseFFmpeg2 = true;を追加する必要があります。