Matlabを使用してaviファイルを作成する際に問題が発生しています。私の目的は、ビデオ全体にエッジフィルターを使用し、ファイルをaviとして保存することです。フィルタは正常に動作し、私の問題はaviファイルの書き込みです。Matlab:aviファイルを書き込む
マイコード:
vidFile = VideoReader('video.avi');
edgeMov = avifile('edges','fps',30);
for i = 1:vidFile.numberofframes
frameI = read(vidFile,i);
frameIgray = rgb2gray(frameI);
edgeI = edge(frameIgray,'canny',0.6);
edgeIuint8 = im2uint8(edgeI);
edgeIuint8(:,:,2) = edgeIuint8(:,:,1);
edgeIuint8(:,:,3) = edgeIuint8(:,:,1);
edgeMov = addframe(edgeMov,edgeIuint8);
end
edgeMov = close(edgeMov)
ループが終了し、AVIFILEが閉じて、私はビデオを再生するために行くと、それは「このファイルを再生中にWindows Media Playerが問題に遭遇しました」と言います。私はMedia Player ClassicとVLCを試してみたところ、問題はファイルそのものでなければならないと私は思っていました。 GSpotを使ってファイルをチェックしたところ、AVIヘッダが壊れていると言われました。
ループを再試行しても、まったく同じ問題が戻されました。私が混乱しているのは、少ないフレーム数(例えば30本)のループを実行すると、ビデオがうまく書き込まれ、見ることができるということです。変換しようとしているビデオのサイズは1000フレームを超えているので、サイズが問題であるかどうかわかりません。
ご協力いただきますようお願い申し上げます。ありがとうございます。
作成されたファイルのサイズはどのくらいですか? –
@Richie Cottonちょうど4GBを下回っています。これは元のビデオより少し小さいです。 –
@リキーコットン:私はそれが使用されている圧縮がないために大きかったと思います。私が下にコメントしたコーデックを使用すると、ファイルは約20MBしかありません。 –