VideoWriter
ビデオ ファイルを書き込むオブジェクトの作成
説明
VideoWriter
オブジェクトは、配列または MATLAB® ムービーからビデオ ファイルを作成する場合に使用します。このオブジェクトには、ビデオに関する情報と出力ビデオを制御するプロパティが含まれています。関数 VideoWriter
を使用して VideoWriter
オブジェクトを作成し、そのプロパティを指定してから、オブジェクト関数を使用してビデオを書き込むことができます。
作成
説明
入力引数
filename
— ファイル名
文字ベクトル | string スカラー
ファイル名。文字ベクトルまたは string スカラーとして指定します。VideoWriter
がファイルを作成します。
VideoWriter
では次のファイル拡張子がサポートされています。
| AVI ファイル |
| Motion JPEG 2000 ファイル |
| MPEG-4 ファイル (Windows® 7 以降または macOS 10.7 以降のシステム) |
有効なファイル拡張子を指定しない場合、VideoWriter
は profile
引数の値に応じて、拡張子に .avi
、.mj2
または .mp4
を使用します。profile
の値を指定しない場合、VideoWriter
は拡張子が .avi
の Motion JPEG 圧縮 AVI ファイルを作成します。
例: 'myFile.avi'
例: '../dir/videos/myFile.mj2'
profile
— ファイルの種類
'Motion JPEG AVI'
(既定値) | 'Archival'
| 'Motion JPEG 2000'
| ...
ファイルの種類。次のいずれかとして指定します。
profile の値 | 説明 |
---|---|
| 可逆圧縮による Motion JPEG 2000 ファイル |
| Motion JPEG エンコードを使用する AVI ファイル |
| Motion JPEG 2000 ファイル |
| H.264 エンコードを使用する MPEG-4 ファイル (Windows 7 以降または macOS 10.7 以降のシステム) |
|
|
| インデックス付きビデオを使用した非圧縮 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
を呼び出した後にプロパティの値を変更することはできません。そのため、プロパティの値の変更はビデオ ファイルを書き込み用に開く前に行ってください。
ColorChannels
— カラー チャネルの数
正の整数
この プロパティ は読み取り専用です。
各出力ビデオ フレームのカラー チャネル数。正の整数として指定します。
未圧縮 AVI、Motion JPEG AVI および MPEG-4 ファイルには 3 つのカラー チャネルがあります。
インデックス付き AVI ファイルおよびグレースケール AVI ファイルには 1 つのカラー チャネルがあります。
Motion JPEG 2000 ファイルのチャネル数は、関数
writeVideo
への入力データによって異なり、モノクロ データの場合は 1 つ、カラー データの場合は 3 つです。
データ型: double
Colormap
— ビデオ ファイルの色情報
P
行 3 列の数値行列
ビデオ ファイルの色情報。3 列で最大 256 行をもつ数値行列として指定します。行列の各行は、RGB 3 成分を使用して 1 色を定義します。RGB 3 成分は、色の赤、緑、青成分の強度を指定する 3 成分の行ベクトルです。強度値は [0,1]
の範囲でなければなりません。
カラーマップは、open
を呼び出す前に明示的に設定するか、最初のフレームを書き込むときにムービー フレーム構造体の colormap
フィールドを使用して設定することができます。
Colormap
プロパティは、インデックス付き AVI ファイルの書き込みに使用されるオブジェクトのみに適用されます。
例: colormap(summer(256))
データ型: double
| uint8
CompressionRatio
— ターゲットの圧縮率
10
(既定値) | 1 より大きい整数
ターゲットの圧縮率。1 より大きい整数として指定します。圧縮率は、入力イメージのバイト数と圧縮イメージのバイト数の比率です。ビデオ データは、指定されたターゲットを超えない範囲で可能な限り圧縮されます。
CompressionRatio
は、Motion JPEG 2000 ファイルの書き込みに使用されるオブジェクトのみに使用できます。open
を呼び出した後に CompressionRatio
値を変更することはできません。以前に LosslessCompression
を true
に設定した場合、CompressionRatio
を設定するとエラーが生成されます。
例: 5
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Duration
— 出力ファイルの継続時間
スカラー値
この プロパティ は読み取り専用です。
出力ファイルの継続時間 (秒単位)。スカラー値として指定します。
データ型: double
FileFormat
— 書き込むファイルの種類
'avi'
| 'mp4'
| 'mj2'
この プロパティ は読み取り専用です。
書き込むファイルの種類。'avi'
、'mp4'
または 'mj2'
を指定します。
Filename
— ファイルの名前
文字ベクトル | string スカラー
この プロパティ は読み取り専用です。
ファイルの名前。文字ベクトルまたは string スカラーとして指定します。
FrameCount
— フレームの数
整数
この プロパティ は読み取り専用です。
ビデオ ファイルに書き込まれるフレーム数。整数として指定します。
データ型: double
FrameRate
— ビデオ再生レート
30
(既定値) | 正の数値
ビデオの再生レート (1 秒あたりのフレーム数)。正の数値として指定します。
open
を呼び出した後に FrameRate
値を変更することはできません。
例: 10
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Height
— 各ビデオ フレームの高さ
スカラー
この プロパティ は読み取り専用です。
各ビデオ フレームの高さ (ピクセル単位)。スカラーとして指定します。writeVideo
メソッドが最初のフレームの次元に基づいて Height
と Width
の値を設定します。
MPEG-4 ファイルは、2 で割り切れるフレーム次元を必要とします。MPEG-4 ファイルの入力フレームの高さが偶数でない場合、VideoWriter
は最下部の行を黒いピクセルでパディングします。Windows システム上の MPEG-4 ファイルの場合、指定可能な値は Windows のバージョンによって異なります。
データ型: double
LosslessCompression
— 可逆圧縮
true
または 1
| false
または 0
可逆圧縮。数値または logical 1
(true
) または 0
(false
) として指定します。LosslessCompression
プロパティは、Motion JPEG 2000 ファイルの書き込みに使用されるオブジェクトのみに使用できます。
LosslessCompression
が true
の場合、次のようになります。
関数
writeVideo
は、圧縮を解除した後のデータが入力データと同一になるような方法でデータを書き込みます。VideoWriter
は、CompressionRatio
の指定された値を無視します。
open
を呼び出した後に LosslessCompression
値を変更することはできません。
LosslessCompression
は、'Motion JPEG 2000'
プロファイルの場合は false
、'Archival'
プロファイルの場合は true
に既定で設定されています。
MJ2BitDepth
— Motion JPEG 2000 ファイルのビット深度
範囲 [1,16]
の整数
Motion JPEG 2000 ファイルのビット深度。範囲 [1,16]
の整数として指定します。ビット深度は、入力イメージ データの最下位ビットの数です。
MJ2BitDepth
は、Motion JPEG 2000 ファイルの書き込みに使用されるオブジェクトのみに使用できます。open
メソッドを呼び出す前に、値を指定していない場合、VideoWriter
は入力データ型に基づいてビット深度を設定します。たとえば、writeVideo
に入力されたデータが uint8
の配列または int8
値である場合、MJ2BitDepth
は 8
です。
例: 8
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Path
— ビデオ ファイルの絶対パス
文字ベクトル | string スカラー
この プロパティ は読み取り専用です。
ビデオ ファイルの絶対パス。文字ベクトルまたは string スカラーとして指定します。
Quality
— ビデオの画質
75
(既定値) | 範囲 [0,100]
の整数
ビデオの画質。範囲 [0,100]
の整数として指定します。数が大きい場合、ビデオの画質は高くなり、ファイル サイズは大きくなります。逆に小さい値では、ビデオの画質がより低く、ファイル サイズがより小さくなります。
Quality
は、MPEG-4
または Motion JPEG AVI
プロファイルに関連付けられているオブジェクトにのみ使用できます。open
を呼び出した後に Quality
値を変更することはできません。
例: 50
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
VideoBitsPerPixel
— ピクセルあたりのビット数
数値スカラー
この プロパティ は読み取り専用です。
各出力ビデオ フレームのピクセルあたりのビット数。数値スカラーとして指定します。
トゥルーカラー ビデオを含む AVI ファイル、Motion JPEG AVI および MPEG-4 ファイルのピクセルあたりのビット数は 24 です (3 つの各色帯域に対して 8 ビット)。
インデックス付き AVI ファイルおよびグレースケール AVI ファイルのピクセルあたりのビット数は 8 です。
Motion JPEG 2000 ファイルの場合、ピクセルあたりのビット数は、MJ2BitDepth
の値およびイメージ データの帯域数によって異なります。たとえば、writeVideo
への入力データが uint16
または int16
値の 3 次元配列である場合、MJ2BitDepth
の既定値は 16
で、VideoBitsPerPixel
は 48
(ビット深度の 3 倍) です。
データ型: double
VideoCompressionMethod
— ビデオ圧縮の種類
'None'
| 'H.264'
| 'Motion JPEG'
| 'Motion JPEG 2000'
この プロパティ は読み取り専用です。
ビデオ圧縮の種類。'None'
、'H.264'
、'Motion JPEG'
または 'Motion JPEG 2000'
として指定します。
VideoFormat
— MATLAB でのビデオ形式の表現
文字ベクトル | string スカラー
この プロパティ は読み取り専用です。
MATLAB でのビデオ形式の表現。文字ベクトルまたは string スカラーとして指定します。
Motion JPEG 2000 ファイル以外のファイル形式では、VideoWriter
は VideoFormat
を次の表のいずれかの値に設定します。
ビデオ形式 |
|
---|---|
未圧縮 AVI、Motion JPEG AVI または MPEG-4 ファイル | 'RGB24' |
インデックス付きビデオの AVI ファイル | 'Indexed' |
グレースケール ビデオの AVI ファイル | 'Grayscale' |
Motion JPEG 2000 ファイルの場合、VideoWriter
は VideoFormat
を MJ2BitDepth
の値と writeVideo
メソッドに対する入力イメージ データの形式に基づいて設定します。たとえば、MJ2BitDepth
プロパティを指定しない場合、VideoWriter
は次のように形式を設定します。
イメージ データの形式 |
|
---|---|
単一帯域 uint8 | 'Mono8' |
単一帯域 int8 | 'Mono8 Signed' |
単一帯域 uint16 | 'Mono16' |
単一帯域 int16 | 'Mono16 Signed' |
3 帯域 uint8 | 'RGB24' |
3 帯域 int8 | 'RGB24 Signed' |
3 帯域 uint16 | 'RGB48' |
3 帯域 int16 | 'RGB48 Signed' |
Width
— 各ビデオ フレームの幅
数値スカラー
この プロパティ は読み取り専用です。
各ビデオ フレームの幅 (ピクセル単位)。数値スカラーとして指定します。関数 writeVideo
が最初のフレームの次元に基づいて Height
と Width
の値を設定します。
MPEG-4 ファイルは、2 で割り切れるフレーム次元を必要とします。MPEG-4 ファイルの入力フレームの幅が偶数でない場合、VideoWriter
は右端の 1 列を黒いピクセルでパディングします。Windows システム上の MPEG-4 ファイルの場合、指定可能な値は Windows のバージョンによって異なります。
データ型: double
オブジェクト関数
open | ビデオ データの書き込みのためにファイルを開く |
close | ビデオ データの書き込み後にファイルを閉じる |
writeVideo | ビデオ データをファイルに書き込む |
VideoWriter.getProfiles | VideoWriter でサポートされているプロファイルとファイル形式 |
例
VideoWriter
オブジェクトの作成とビデオの書き込み
ファイルにビデオを書き込みます。最初にランダム データを含む配列を作成し、出力ファイルの 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)
非圧縮 AVI のプロファイルの指定とビデオの書き込み
プロファイルを指定してビデオ オブジェクトを作成し、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)
アニメーションからの AVI ファイルの作成
ビデオのフレームの生成に使用する座標軸と Figure のプロパティを設定します。
Z = peaks; surf(Z); axis tight manual
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
VideoWriter
オブジェクトを閉じます。
close(v)
拡張機能
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2010b で導入R2021b: スレッドベースの環境のサポート
MATLAB backgroundPool
を使用して、バックグラウンドで VideoWriter
を実行できます。
R2021b: JPEG 2000 イメージでのピクセルの違い
R2021b 以前のバージョンの MATLAB では、JPEG 2000 イメージ間でピクセル値が異なる可能性があります。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)