이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

movie

녹화된 동영상 프레임 재생

구문

movie(M)
movie(M,n)
movie(M,n,fps)
movie(h,...)
movie(h,M,n,fps,loc)

설명

movie 함수는 동영상 프레임(대개 getframe으로 생성됨) 열이 있는 행렬로 정의된 동영상을 재생합니다.

movie(M)은 현재 좌표축을 기본 대상으로 사용하여 행렬 M의 동영상을 한 번 재생합니다. 좌표축이 아니라 Figure에 있는 동영상을 재생하려면 movie(figure_handle,...) 같이 Figure 핸들(또는 gcf)을 첫 번째 인수로 지정하십시오. M은 동영상 프레임(대개 getframe으로 생성) 배열이어야 합니다.

movie(M,n)은 동영상을 n번 재생합니다. n이 음수이면 매번 재생될 때마다 정방향으로 재생된 다음 역방향으로 재생됩니다. n이 벡터이면 첫 번째 요소는 동영상 재생 횟수이고 나머지 요소는 동영상에서 재생할 프레임의 목록입니다.

예를 들어 M에 프레임이 4개 있다면 n = [10 4 4 2 1]은 동영상을 10번 재생합니다. 이때 동영상은 프레임 4, 프레임 4, 프레임 2, 마지막으로 프레임 1의 순서로 구성됩니다.

movie(M,n,fps)는 동영상을 초당 fps 프레임으로 재생합니다. 디폴트 값은 초당 12프레임입니다. 지정된 속도로 재생할 수 없는 컴퓨터는 가능한 최대한의 속도로 재생합니다.

movie(h,...)는 핸들 h로 식별되는 Figure나 좌표축의 중심에서 동영상을 재생합니다. Figure나 좌표축을 지정하면 MATLAB®이 동영상을 사용 가능한 크기에 맞춥니다.

movie(h,M,n,fps,loc)는 요소를 4개 가진 위치 벡터 [x y 0 0]loc를 지정합니다. 이때 동영상 프레임의 왼쪽 아래 코너가 고정됩니다(벡터의 처음 두 요소만 사용됨). 위치는 객체의 Units 속성에 관계없이, handle h로 지정된 Figure나 좌표축의 왼쪽 아래 코너를 기준으로 하며 픽셀 단위입니다.

예제

모두 축소

루프에서 getframe 함수를 사용하여 peaks 함수 진동의 프레임을 기록합니다. 배열을 사전할당(Preallocation)하여 동영상 프레임을 저장합니다.

figure
Z = peaks;
surf(Z)
axis tight manual
ax = gca;
ax.NextPlot = 'replaceChildren';


loops = 40;
F(loops) = struct('cdata',[],'colormap',[]);
for j = 1:loops
    X = sin(j*pi/10)*Z;
    surf(X,Z)
    drawnow
    F(j) = getframe;
end

동영상을 두 번 재생하려면 movie(F,2)를 사용하십시오.

movie 함수는 기본 Figure 크기인 560x420을 사용하며 크기가 더 크거나 작은 프레임의 동영상에 맞게 Figure의 크기를 조정하지 않습니다. 다른 프레임 크기를 수용하려면 동영상에 맞게 Figure의 크기를 조정하면 됩니다.

movie는 8비트 이미지 프레임만 허용하고 16비트 회색조나 24비트 트루컬러 이미지 프레임은 허용하지 않습니다.

동영상을 버퍼링하면 모든 프레임이 메모리에 저장됩니다. 따라서 Microsoft® Windows®와 아마도 다른 플랫폼에서는 시스템 리소스에 따라 긴 동영상(약 수백 개의 프레임)이 메모리를 모두 소진해 버릴 수 있습니다. 이러한 경우 오류 메시지가 발생합니다.

??? Error using ==> movie 
Could not create movie frame

동영상을 중단하려면 Ctrl+C를 누르면 됩니다.

movie는 내장 함수가 아닙니다. 따라서 builtin 함수를 사용하여 movie를 호출할 수 없습니다.

Windows 시스템에서 렌더러를 사용할 때의 제한 사항

Figure의 Renderer 속성을 painters로 설정하면 일부 Windows 시스템에서 getframe과 함께 OpenGL 렌더러를 사용할 때 발생하는 제한 사항을 해결할 수 있습니다.

R2006a 이전에 개발됨