本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

movie

播放录制的影片帧

语法

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

说明

movie 函数可播放由矩阵定义的影片,矩阵的列表示影片帧(通常由 getframe 生成)。

movie(M) 使用当前坐标区作为默认目标播放矩阵 M 中的影片,且只播放一次。如果您想在图窗中而不是坐标区上播放影片,那么将图窗句柄(或 gcf)指定为第一个参数:movie(figure_handle,...)M 必须是影片帧数组(通常来自 getframe)。

movie(M,n) 会将影片播放 n 次。如果 n 是负数,那么每个循环会先快进然后再倒播影片。如果 n 是一个向量,那么第一个元素是影片播放次数,其余元素构成影片播放的帧列表。

例如,如果 M 有四个帧,那么 n = [10 4 4 2 1] 会播放影片十次,而且影片帧播放的顺序是第 4 帧,然后再次播放第 4 帧,然后第 2 帧,最后第 1 帧。

movie(M,n,fps) 以每秒 fps 帧的速度播放影片。默认值是每秒 12 帧。达不到指定速度的计算机会尽可能快地播放。

movie(h,...) 在由句柄 h 所标识的图窗或坐标区中心位置播放影片。指定图窗或坐标区可以使 MATLAB® 将影片调整到合适大小。

movie(h,M,n,fps,loc)loc 指定一个四元素位置向量 [x y 0 0],其中影片帧的左下角已经固定(只用到向量中的前两个元素)。该位置相对于由 handle h 指定的图窗或坐标区左下角,以像素为单位,与对象的 Units 属性无关。

示例

全部折叠

在一个循环中使用 getframe 函数记录 peaks 函数振荡的帧。预分配一个数组以存储影片帧。

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 函数使用默认尺寸为 560×420 的图窗,而且不会调整图窗尺寸以适应帧偏大或偏小的影片。要适应其他框架尺寸,您可以重新调整图窗大小以适应影片。

movie 只接受 8 位图像帧;它不接受 16 位灰度或 24 位真彩色图像帧。

缓冲影片可将所有帧放入内存中。这样,在 Microsoft® Windows® 及其他平台上,一些很长的影片(数百帧)可能会耗尽内存,这取决于系统资源。这种情况下,可能会发出一条错误消息:

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

您可以输入 Ctrl-C 终止影片。

movie 不是内置函数。因此,不能使用 builtin 函数调用 movie

Windows 系统上的渲染器限制

将图窗的 Renderer 属性设置为 painters 将解除在某些 Windows 系统上结合使用 getframeOpenGL 渲染器的限制。

在 R2006a 之前推出