0

BMP のセットを avi に変換するスクリプトを書いています。最近までは正常に機能していました。「ストリームデータの書き込みに失敗しました」という奇妙なエラーが表示されるようになりました。bmpsの5つのライブラリをaviに変換した後に取得します。BMP のライブラリー上で実行され、各ライブラリーを avi に変換します。6 番目のムービーにスタックするたびに、6 番目のライブラリに破損ファイルはありません。理由はありますか?

これはコードです:

%this works   
clc   
%path='C:/Documents and Settings/Ariel/Desktop/exp_brk_scrm/2.1/group1/exp_up/exp_up/4python/stims';   
%FullPath=strcat(path,'/mov1.avi');   
path4avi='G:/experiments/cfs3/building/Copy of StimBMP/avi/'; %dont forget the   in the end of the path    
pathOfFrames='G:/experiments/cfs3/building/Copy of StimBMP/stims/'; %here too   
NumberOfFiles=70; %to be generated   
NumberOfFrames=8; %in each avi file    

for i=1:1:(NumberOfFiles)    

    FileName=strcat(path4avi,'Stim',int2str(i),'.avi') %the generated files    
    aviobj = avifile(FileName,'compression','None'); %due to changes in the new Media Players   
    aviobj.fps=10;%10 frames in Sec     

    for j=1:1:(NumberOfFrames)   

        Frame=strcat(pathOfFrames,'stim',int2str(i),'/stim',int2str(j),'.BMP') % the BMP's (not a good name for thedirectory)    

        %[Fa,map]=imread(Frame);     
        %imshow(Fa,map); %
        [Fa,map]=imread(Frame);
        imshow(Fa,map);       
        % imshow(Fa);     
        F=getframe();    
        aviobj=addframe(aviobj,F)    
    end     
    aviobj=close(aviobj);    

end     
4

3 に答える 3

1

Since I'm not sure what the source of your problem is, I'm just providing a simple working example of how to create an AVI movie. Demo images from the Image Processing Toolbox are used:

figure('Color','white')
aviObj = avifile('out.avi', 'fps',5);             %# create AVI object
for i=1:10
    I = imread( sprintf('AT3_1m4_%02d.tif',i) );  %# read image frame
    imshow(I, 'Border','tight'), colormap gray    %# show image
    aviObj = addframe(aviObj, getframe(gcf));     %# grab frame and add to AVI
end
close(gcf)
aviObj = close(aviObj);                           %# close and write movie

winopen('out.avi')                                %# play movie in Windows

out.avi

于 2010-08-13T00:58:33.163 に答える
1

こんにちは、これは少し単純化しすぎているように見えるかもしれませんが、同じ問題がありました。私のコードは正常に機能し、あなたが説明したとおりに 1 日だけ停止しました。ファイルを書き込んでいた宛先に、ビデオ ファイル用の十分なメモリがなかっただけであることがわかりました。不要なジャンクを削除したところ、すぐに機能しました。Matlab は、問題がストレージ スペースにあることを認識していないため、私の場合は、独自の「movie2avi」機能に問題があると述べています。

于 2013-03-01T12:09:03.793 に答える
0

ライブラリの順序は重要ですか? つまり、最初に 6 番目を実行し、最後に 1 番目を実行すると、最初または最後にクラッシュしますか?

最初にクラッシュする場合は、ライブラリ #6 に問題があります。最後にクラッシュする場合は、メモリがいっぱいになっている可能性があります。スクリプトを実行する前に使用clear classesしてください。これにより、Matlab がメモリをいっぱいにしているものが排除されます。または、リークまたは断片化が非常に悪い場合は、3 つのライブラリの後に Matlab を再起動してみてください。

于 2010-08-13T10:16:48.477 に答える