Main Content

VideoWriter

ビデオ ファイルを書き込むオブジェクトの作成

説明

VideoWriter オブジェクトは、配列または MATLAB® ムービーからビデオ ファイルを作成する場合に使用します。このオブジェクトには、ビデオに関する情報と出力ビデオを制御するプロパティが含まれています。関数 VideoWriter を使用して VideoWriter オブジェクトを作成し、そのプロパティを指定してから、オブジェクト関数を使用してビデオを書き込むことができます。

作成

説明

v = VideoWriter(filename) は、ビデオ データを Motion JPEG で圧縮された AVI ファイルに書き込む VideoWriter オブジェクトを作成します。

v = VideoWriter(filename,profile) は、さらに特定のファイル形式 ('MPEG-4''Uncompressed AVI' など) 向けに調整された一連のプロパティを適用します。

入力引数

すべて展開する

ファイル名。文字ベクトルまたは string スカラーとして指定します。VideoWriter がファイルを作成します。

VideoWriter では次のファイル拡張子がサポートされています。

.avi

AVI ファイル

.mj2

Motion JPEG 2000 ファイル

.mp4 または .m4v

MPEG-4 ファイル (Windows® 7 以降または macOS 10.7 以降のシステム)

有効なファイル拡張子を指定しない場合、VideoWriterprofile 引数の値に応じて、拡張子に .avi.mj2 または .mp4 を使用します。profile の値を指定しない場合、VideoWriter は拡張子が .avi の Motion JPEG 圧縮 AVI ファイルを作成します。

例: 'myFile.avi'

例: '../dir/videos/myFile.mj2'

ファイルの種類。次のいずれかとして指定します。

profile の値説明

'Archival'

可逆圧縮による Motion JPEG 2000 ファイル

'Motion JPEG AVI'

Motion JPEG エンコードを使用する AVI ファイル

'Motion JPEG 2000'

Motion JPEG 2000 ファイル

'MPEG-4'

H.264 エンコードを使用する MPEG-4 ファイル (Windows 7 以降または macOS 10.7 以降のシステム)

'Uncompressed AVI'

RGB24 ビデオを使用した非圧縮 AVI ファイル

'Indexed AVI'

インデックス付きビデオを使用した非圧縮 AVI ファイル

'Grayscale AVI'

グレースケール ビデオを使用した非圧縮 AVI ファイル

profile によって、VideoCompressionMethod などのビデオ プロパティの既定値が設定されます。

プロパティ

すべて展開する

VideoWriter オブジェクトには、出力ビデオを制御するプロパティが含まれています。事前に定義された "プロファイル" を指定した関数 VideoWriter を使用することで、'Uncompressed AVI''MPEG-4' などの特定の形式に適したプロパティをもつ VideoWriter オブジェクトを作成できます。たとえば、Motion JPEG AVI プロファイルを使用して VideoWriter オブジェクトを作成し、Quality プロパティに値を割り当てることができます。

v = VideoWriter('newfile.avi','Motion JPEG AVI');
v.Quality = 95;

VideoWriter オブジェクトで関数 open を呼び出した後にプロパティの値を変更することはできません。そのため、プロパティの値の変更はビデオ ファイルを書き込み用に開く前に行ってください。

この プロパティ は読み取り専用です。

各出力ビデオ フレームのカラー チャネル数。正の整数として指定します。

  • 未圧縮 AVI、Motion JPEG AVI および MPEG-4 ファイルには 3 つのカラー チャネルがあります。

  • インデックス付き AVI ファイルおよびグレースケール AVI ファイルには 1 つのカラー チャネルがあります。

  • Motion JPEG 2000 ファイルのチャネル数は、関数 writeVideo への入力データによって異なり、モノクロ データの場合は 1 つ、カラー データの場合は 3 つです。

データ型: double

ビデオ ファイルの色情報。3 列で最大 256 行をもつ数値行列として指定します。行列の各行は、RGB 3 成分を使用して 1 色を定義します。RGB 3 成分は、色の赤、緑、青成分の強度を指定する 3 成分の行ベクトルです。強度値は [0,1] の範囲でなければなりません。

カラーマップは、open を呼び出す前に明示的に設定するか、最初のフレームを書き込むときにムービー フレーム構造体の colormap フィールドを使用して設定することができます。

Colormap プロパティは、インデックス付き AVI ファイルの書き込みに使用されるオブジェクトのみに適用されます。

例: colormap(summer(256))

データ型: double | uint8

ターゲットの圧縮率。1 より大きい整数として指定します。圧縮率は、入力イメージのバイト数と圧縮イメージのバイト数の比率です。ビデオ データは、指定されたターゲットを超えない範囲で可能な限り圧縮されます。

CompressionRatio は、Motion JPEG 2000 ファイルの書き込みに使用されるオブジェクトのみに使用できます。open を呼び出した後に CompressionRatio 値を変更することはできません。以前に LosslessCompressiontrue に設定した場合、CompressionRatio を設定するとエラーが生成されます。

例: 5

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

この プロパティ は読み取り専用です。

出力ファイルの継続時間 (秒単位)。スカラー値として指定します。

データ型: double

この プロパティ は読み取り専用です。

書き込むファイルの種類。'avi''mp4' または 'mj2' を指定します。

この プロパティ は読み取り専用です。

ファイルの名前。文字ベクトルまたは string スカラーとして指定します。

この プロパティ は読み取り専用です。

ビデオ ファイルに書き込まれるフレーム数。整数として指定します。

データ型: double

ビデオの再生レート (1 秒あたりのフレーム数)。正の数値として指定します。

open を呼び出した後に FrameRate 値を変更することはできません。

例: 10

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

この プロパティ は読み取り専用です。

各ビデオ フレームの高さ (ピクセル単位)。スカラーとして指定します。writeVideo メソッドが最初のフレームの次元に基づいて HeightWidth の値を設定します。

MPEG-4 ファイルは、2 で割り切れるフレーム次元を必要とします。MPEG-4 ファイルの入力フレームの高さが偶数でない場合、VideoWriter は最下部の行を黒いピクセルでパディングします。Windows システム上の MPEG-4 ファイルの場合、指定可能な値は Windows のバージョンによって異なります。

データ型: double

可逆圧縮。数値または logical 1 (true) または 0 (false) として指定します。LosslessCompression プロパティは、Motion JPEG 2000 ファイルの書き込みに使用されるオブジェクトのみに使用できます。

LosslessCompressiontrue の場合、次のようになります。

  • 関数 writeVideo は、圧縮を解除した後のデータが入力データと同一になるような方法でデータを書き込みます。

  • VideoWriter は、CompressionRatio の指定された値を無視します。

open を呼び出した後に LosslessCompression 値を変更することはできません。

LosslessCompression は、'Motion JPEG 2000' プロファイルの場合は false'Archival' プロファイルの場合は true に既定で設定されています。

Motion JPEG 2000 ファイルのビット深度。範囲 [1,16] の整数として指定します。ビット深度は、入力イメージ データの最下位ビットの数です。

MJ2BitDepth は、Motion JPEG 2000 ファイルの書き込みに使用されるオブジェクトのみに使用できます。open メソッドを呼び出す前に、値を指定していない場合、VideoWriter は入力データ型に基づいてビット深度を設定します。たとえば、writeVideo に入力されたデータが uint8 の配列または int8 値である場合、MJ2BitDepth8 です。

例: 8

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

この プロパティ は読み取り専用です。

ビデオ ファイルの絶対パス。文字ベクトルまたは string スカラーとして指定します。

ビデオの画質。範囲 [0,100] の整数として指定します。数が大きい場合、ビデオの画質は高くなり、ファイル サイズは大きくなります。逆に小さい値では、ビデオの画質がより低く、ファイル サイズがより小さくなります。

Quality は、MPEG-4 または Motion JPEG AVI プロファイルに関連付けられているオブジェクトにのみ使用できます。open を呼び出した後に Quality 値を変更することはできません。

例: 50

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

この プロパティ は読み取り専用です。

各出力ビデオ フレームのピクセルあたりのビット数。数値スカラーとして指定します。

トゥルーカラー ビデオを含む AVI ファイル、Motion JPEG AVI および MPEG-4 ファイルのピクセルあたりのビット数は 24 です (3 つの各色帯域に対して 8 ビット)。

インデックス付き AVI ファイルおよびグレースケール AVI ファイルのピクセルあたりのビット数は 8 です。

Motion JPEG 2000 ファイルの場合、ピクセルあたりのビット数は、MJ2BitDepth の値およびイメージ データの帯域数によって異なります。たとえば、writeVideo への入力データが uint16 または int16 値の 3 次元配列である場合、MJ2BitDepth の既定値は 16 で、VideoBitsPerPixel48 (ビット深度の 3 倍) です。

データ型: double

この プロパティ は読み取り専用です。

ビデオ圧縮の種類。'None''H.264''Motion JPEG' または 'Motion JPEG 2000' として指定します。

この プロパティ は読み取り専用です。

MATLAB でのビデオ形式の表現。文字ベクトルまたは string スカラーとして指定します。

Motion JPEG 2000 ファイル以外のファイル形式では、VideoWriterVideoFormat を次の表のいずれかの値に設定します。

ビデオ形式

VideoFormat の値

未圧縮 AVI、Motion JPEG AVI または MPEG-4 ファイル

'RGB24'

インデックス付きビデオの AVI ファイル

'Indexed'

グレースケール ビデオの AVI ファイル

'Grayscale'

Motion JPEG 2000 ファイルの場合、VideoWriterVideoFormatMJ2BitDepth の値と writeVideo メソッドに対する入力イメージ データの形式に基づいて設定します。たとえば、MJ2BitDepth プロパティを指定しない場合、VideoWriter は次のように形式を設定します。

イメージ データの形式

VideoFormat の値

単一帯域 uint8'Mono8'
単一帯域 int8'Mono8 Signed'
単一帯域 uint16'Mono16'
単一帯域 int16'Mono16 Signed'
3 帯域 uint8'RGB24'
3 帯域 int8'RGB24 Signed'
3 帯域 uint16'RGB48'
3 帯域 int16'RGB48 Signed'

この プロパティ は読み取り専用です。

各ビデオ フレームの幅 (ピクセル単位)。数値スカラーとして指定します。関数 writeVideo が最初のフレームの次元に基づいて HeightWidth の値を設定します。

MPEG-4 ファイルは、2 で割り切れるフレーム次元を必要とします。MPEG-4 ファイルの入力フレームの幅が偶数でない場合、VideoWriter は右端の 1 列を黒いピクセルでパディングします。Windows システム上の MPEG-4 ファイルの場合、指定可能な値は Windows のバージョンによって異なります。

データ型: double

オブジェクト関数

openビデオ データの書き込みのためにファイルを開く
closeビデオ データの書き込み後にファイルを閉じる
writeVideoビデオ データをファイルに書き込む
VideoWriter.getProfilesVideoWriter でサポートされているプロファイルとファイル形式

すべて折りたたむ

ファイルにビデオを書き込みます。最初にランダム データを含む配列を作成し、出力ファイルの VideoWriter オブジェクトを作成してから、配列をビデオに書き込みます。

300 行 300 列のデータの行列を作成します。

A = rand(300);

newfile.avi という Motion JPEG AVI ファイルを書き込む VideoWriter オブジェクトを作成し、オブジェクトを書き込み用に開きます。

v = VideoWriter("newfile.avi");
open(v)

データの行列 A をビデオ ファイルに書き込みます。

writeVideo(v,A)

VideoWriter オブジェクトを閉じます。

close(v)

プロファイルを指定してビデオ オブジェクトを作成し、RGB イメージを含む配列を作成して、その配列をビデオ ファイルに書き込みます。

RGB24 ビデオの新しい非圧縮 AVI ファイル用に VideoWriter オブジェクトを作成します。

v = VideoWriter("newfile.avi","Uncompressed AVI");

書き込み用にファイルを開きます。

open(v)

サンプルの静止画 peppers.png からのデータを含む配列を作成します。A のイメージをビデオ ファイルに書き込みます。

A = imread("peppers.png");
writeVideo(v,A)

VideoWriter オブジェクトを閉じます。

close(v)

ビデオのフレームの生成に使用する座標軸と Figure のプロパティを設定します。

Z = peaks;
surf(Z);
axis tight manual

Figure contains an axes object. The axes object contains an object of type surface.

set(gca,"NextPlot","replacechildren")

出力ビデオ ファイルの VideoWriter オブジェクトを作成し、オブジェクトを書き込み用に開きます。

v = VideoWriter("peaks.avi");
open(v)

一連のフレームを生成し、Figure から各フレームを取得して、各フレームをファイルに書き込みます。

for k = 1:20
   surf(sin(2*pi*k/20)*Z,Z)
   frame = getframe(gcf);
   writeVideo(v,frame)
end

Figure contains an axes object. The axes object contains an object of type surface.

VideoWriter オブジェクトを閉じます。

close(v)

拡張機能

バージョン履歴

R2010b で導入

すべて展開する