Navigation : Top / Movieの作成

Movieの作成

Movieの作成

一番シンプルな方法

figure(1);clf
for i=1:nt
   h=surf(X,Y,Z);
   M(i) = getframe(gcf);
end
movie2avi(M,'movie')

もう少し本格的

AVIフォーマットのファイルは,version 6.0より利用できるようになりました.

例) 
ix_size_movie = 640;
iy_size_movie = 480;

for it=1:nt 
 if it == 1 
  figure(1); clf;
  set(gcf,'position', ... 
  [0 画面のたてサイズ-iy_size_movie ix_size_movie iy_size_movie]); 
  axis manual 
  axis([x_min x_max 0 y_max]) 
  set(gca,'nextplot','replacechildren') ; 
  set(0,'Units','Pixels') %単位をpixelに
  hsize = get(gcf,'Position'); 
 end 

 *** 書きたい図 ***; 
 M(:,it) = getframe( gcf, [0 0 hsize(3) hsize(4)] ); 
end 
movie2avi( M, file_name ); 

movieは画面の左上からの領域を保存するので,"set(gcf,'Position',[x1 x2 y1 y2])"で場所を確定しないとちゃんと作れません.

movie2aviで作られるmovieは非圧縮なのでtmpgenc(http://www.tmpgenc.com/)でmpegにすると1/10〜1/30のサイズになります.

movieの保存

AVI形式

movie2avi(M,cname,'COMPRESSION','Cinepak','QUALITY',90)
  • 'COMPRESSION'
    • 'Indeo3' Microsoft形式(古い, Mediaplayer非対応)
    • 'Indeo5' Microsoft形式(古い, Mediaplayer非対応)
    • 'Cinepak'
    • 'MSVC'
    • 'none' 圧縮なし
    • Default
      • 'Indeo3' for MS-Windwos;
      • 'none' for linux;
  • 'fps'
    • Default = 15;
  • 'QUALITY'
    • 50-100
    • Default = 75;

mpegを直接作る

つぎに直接MPEGファイルにする方法ですが、MATLABでは正式にはMPEG ファイルをサポートしていません。 Matlab centralにあるfreeのmpgread, mpgwriteを使用する.

使い方: mpgwrite

mpgwrite(M,map,filename)
例)
mpgwrite(M,jet,'example')

Tips

  • M(i)=getframeで記録したデータがmoive(M)でちゃんと再生されない場合
    • レンダリングモードが違う場合がある.zbufferを使う場合,
       set(gcf,'RendererMode','manual','Renderer','zbuffer')

Link