動画の基本

Wolfram言語は動画オブジェクトを第一級オブジェクトとしてサポートしているため,プログラムによるアクセス, 多数のマルチメディアコンテナおよびコーデックの処理や分析が可能である.これにより,画像処理や音声処理の完全なツールと相まって,動画処理が簡単な処理から高度な分析へと切り開かれた.
動画の作成と表現
動画オブジェクトは,ディスク上の動画ファイルをインポートするか参照するかして作成することができる.
Video[file]
file の動画を表す動画オブジェクト
Video[url]
url の動画を表す動画オブジェクト
Video[Manipulate[]]
Manipulateオブジェクトから生成される動画
VideoGenerator[model]
モデルから生成される動画
Import[file,elem]
動画 file の指定された要素をインポートする
動画作成関数
動画オブジェクトは,インタラクティブな動画描画機能を含む,ローカルあるいはリモートファイルへの参照である.フィでおファイルの実際のデータはアウトオブコアであるが,画像フレームや音声チャンクのような部分はメモリにインポートすることができる.
以下は,Wolfram言語のドキュメントの"ExampleData"ディレクトリから取ったアウトオブコアの動画オブジェクトを作成する:
Importを使ってVideoオブジェクトを作成する:
URLを参照してVideoオブジェクトを作成する:
ManipulateからVideoを作成する:
セルオートマトンの進化を示す画像で10秒間のVideoを作成する:
Importを使うと,動画ファイルから時間,フレームのリスト,音声データ等の特定のデータやメタデータ要素を得ることができる.
動画ファイルで利用できるインポート要素は次の通りである:
2つの動画フレームを画像としてインポートする:
動画の長さを取り出す:
動画の音声コンテンツをAudioオブジェクトまたはRawデータとしてインポートする:
動画の特性
Videoオブジェクトには複数の用途がある.動画ファイルの参照でもあり,動画データのインポータでもありビューアでもある.これらの機能に関して,Videoオブジェクトは異なる特性がある.
動画ファイルおよびそのコンテンツに関連するVideo特性は以下の関数で得ることができる.
Duration[video]
video の長さを与える
Information[video,prop]
video の特性 prop を返す
Import[file,"Summary"]
file の特性の概要をインポートする
動画データの特性
動画オブジェクトの合計の長さを求める:
Information関数は動画の概要を与える:
Informationを使うと,動画オブジェクトの中の1つの特性を抽出することができる:
Import"Summary"要素を使っても,動画ファイルの必要な特性が得られる.
動画ファイルの概要をインポートする:
Videoオブジェクトは,動画データのアクセスや抽出を制御するオプションを取ることができる.これらのオプションはファイルのコンテンツには影響を与えずに,抽出されたデータでの処理や表示のための特性を決定する.
AudioTrackSelection
関心がある音声トラックを選ぶ
RasterSize
抽出されたビデオフレームのラスタサイズを与える
SubtitleTrackSelection
関心がある字幕トラックを選ぶ
VideoTrackSelection
関心がある動画トラックを選ぶ
動画アクセスの特性
ほとんどの動画形式は,複数の音声・字幕・動画トラックの保存をサポートする.
以下は複数の音声および字幕のトラックを含む動画ファイルである:
動画トラックと音声トラックを1つずつ含むこのマルチトラックファイルから動画を構築する:
フレームを抽出したり処理したりする場合,デフォルトでは,ファイルに保存されているようにフレームのもとの次元が使われる.
ファイルのフレームサイズをインポートする:
より小さいRasterSizeを指定することで,動画の解像度を低くする:
Videoオブジェクトから抽出されたフレームサイズは,指定されたRasterSizeに合致する:
動画オブジェクトは,動画および音声の再生を制御するより多くのオプションを取ることができる.
Appearance
動画プレーヤーの外観
AudioOutputDevice
動画再生に使う音声出力デバイス
ImageSize
表示される動画の画像サイズ
SoundVolume
動画プレーヤーの音量
動画再生の特性
幅200画素の"Minimal" GUIを作成する:
音量を50%に設定する:
コンテンツの抽出
動画ファイルから音声データや指定されたフレームを抽出するために,以下の関数を使うことができる.
Audio[video]
最初の音声トラックに対応するAudioオブジェクトを返す
VideoFrameList[video,n]
n 個の動画フレームのリストを返す
VideoExtractFrames[video,{t1,t2,}]
時間 t1,t2,における動画フレームを抽出する
動画コンテンツ抽出関数
フレームを抽出することによってビデオの概要を作成する.
ビデオから指定した時間のフレームを抽出する:
ビデオから等間隔でフレームを抽出し,サムネイルグリッドを作成する:
動画編集
動画の一部を切り取ったり,削除したり,動画に音声トラックを加えたりすることは一般的な操作である.このような動画編集には以下の関数が使える.
VideoCombine[video,audio,]
動画オブジェクトと音声オブジェクトを組み合せて1つの動画にする
VideoDelete[video,{t1,t2}]
動画の一部を削除する
VideoJoin[video1,video2,]複数の動画オブジェクトを順に足していく
VideoSplit[video,{t1,t2}]1つの動画を複数の動画セグメントに分割する
VideoTranscode[video,format]
動画を指定の形式およびコーデックにコード変換する
VideoTrim[video,{t1,t2}]
ビデオの1セグメントをトリミングする
動画編集関数
動画の区間をトリミングする:
結果の動画の時間を調べる:
動画からこの間隔を削除する:
指定した時間でビデオを分割する:
処理と分析
動画の処理やフィルタリングは動画入力,動画出力の操作である.関数は個々のフレーム,あるいは一連の動画フレームに適用され,出力動画用の新しいフレームを生成する.動画分析は,統計量を計算したり,単独のフレームや一連の動画フレームから特徴を抽出したりすることによって,動画のコンテンツを理解する処理である.
AudioTrackApply[f,video]
video の音声トラックに f を適用し,新しい動画を返す
VideoFrameMap[f,video,]
動画フレームのパーティションに f を適用し,新しい動画を返す
VideoMap[f,video,]
動画のパーティションに f を適用し,新しい動画を返す
VideoMapList[f,video,]
動画のパーティションに f を適用し,リストを返す
VideoMapTimeSeries[f,video,]
動画のパーティションに f を適用し,時系列を返す
VideoIntervals[video,crit,]
動画のパーティション上で crit をチェックし,関心のある区間を返す
動画の処理と分析の関数
VideoFrameMapは画像関数を個々のフレームまたは一連の動画フレームに適用し,新しい動画オブジェクトを生成する.
動画シーンのフレームの色を反転する:
5つの連続するフレームを組み合わせることによって,モーションブラーを生成する:
VideoMapTimeSeriesを使うと動画コンテンツを分析および検出することができる.これは関数を動画フレームに適用し,任意の結果がTimeSeriesとして返される.
各フレームのエントロピーを判別する:
連続する画像フレーム間の差分を測定する:
ストリーミング
VideoStream式を使うと,動画再生をプログラムで操作することができる.
VideoStream[video]
video から新規のVideoStreamオブジェクトを作成する
VideoPlay[vstream]
VideoStreamオブジェクト vstream の再生を開始する
VideoPause[vstream]
vstream の再生を一時停止する
VideoStop[vstream]
vstream の再生を中止する
VideoStreams[]
既存の全ビデオストリームを返す
RemoveVideoStream[vstream]
VideoStream オブジェクト vstream を削除する
動画ストリーミング関数
VideoオブジェクトからVideoStreamオブジェクトを作成する:
動画ストリームで利用できる特性のリストを得る:
特定のストリーム特性を得る:
動画ストリームをプログラムで開始,一時停止,中止する:
動画ストリームの現在のフレームを表示する:
利用可能なすべての動画ストリームを調べる:
すべての動画ストリームを削除する: