movie
播放录制的影片帧
说明
示例
记录帧并播放影片一次
在一个循环中使用 getframe
函数来记录 peaks
示例函数的帧,然后将这些影片帧播放一次。
创建一个 figure
对象 h
。初始化 peaks
函数 Z
的曲面图。自定义图窗坐标区。
h = figure; Z = peaks; surf(Z) axis tight manual ax = gca; ax.NextPlot = 'replaceChildren';
预分配一个包含 40 个元素的数组 M
来存储影片帧。
loops = 40; M(loops) = struct('cdata',[],'colormap',[]);
对于 j
的每次迭代,将函数 X
的每个图捕获为一个单独帧。将帧存储在 M
中。
将图窗对象的 'Visible'
属性设置为 'off'
,以在计算 X
时隐藏曲面图。
h.Visible = 'off'; for j = 1:loops X = sin(j*pi/10)*Z; surf(X,Z) drawnow M(j) = getframe; end
将图窗的 'Visible'
属性设置为 'on'
,并在 M
中播放一次影片。
h.Visible = 'on';
movie(M);
计算帧时查看图窗图
计算帧时查看图窗图。播放一次影片数组。
创建一个 figure
对象 h
,并初始化曲面图。自定义图窗坐标区。
h = figure; Z = peaks; surf(Z) axis tight manual
ax = gca;
ax.NextPlot = 'replaceChildren';
预分配一个包含 40 个元素的数组 M
来存储影片帧。
loops = 40; M(loops) = struct('cdata',[],'colormap',[]);
将函数 X
的每个图捕获为一个单独帧,并将其存储在 M
中。
for j = 1:loops X = sin(j*pi/10)*Z; surf(X,Z) drawnow M(j) = getframe; end
播放一次 M
中的影片。
movie(M);
将影片的四个帧播放两次
将影片数组的四个帧播放两次。
创建一个 figure
对象 h
,并初始化曲面图。自定义图窗坐标区。
h = figure; Z = peaks; surf(Z) axis tight manual ax = gca; ax.NextPlot = 'replaceChildren';
预分配一个包含 40 个元素的数组 M
来存储影片帧。
loops = 40; M(loops) = struct('cdata',[],'colormap',[]);
将函数 X
的每个图捕获为一个单独帧,并将其存储在 M
中。
将图窗对象的 'Visible'
属性设置为 'off'
。
h.Visible = 'off'; for j = 1:loops X = sin(j*pi/10)*Z; surf(X,Z) drawnow M(j) = getframe; end
将图窗的 'Visible'
属性设置为 'on'
。将影片中的第一帧、第十五帧、第二十三帧和第三十六帧按连续顺序播放两次。将影片设置为每秒播放 12 帧。
h.Visible = 'on';
movie(M,[2 1 15 23 36],12);
指定每秒帧数
指定每秒播放影片的帧数。
创建一个 figure
对象 h
,并初始化曲面图。自定义图窗坐标区。
h = figure; Z = peaks; surf(Z) axis tight manual ax = gca; ax.NextPlot = 'replaceChildren';
预分配一个包含 40 个元素的数组 M
来存储影片帧。
loops = 40; M(loops) = struct('cdata',[],'colormap',[]);
将函数 X
的每个图捕获为一个单独帧,并将其存储在 M
中。
将图窗对象的 'Visible'
属性设置为 'off'
。
h.Visible = 'off'; for j = 1:loops X = sin(j*pi/10)*Z; surf(X,Z) drawnow M(j) = getframe; end
将图窗的 'Visible'
属性设置为 'on'
。以每秒 6 帧的速度播放一次影片。
h.Visible = 'on';
movie(M,1,6);
在图窗的左下角播放影片帧
在图窗的左下角播放影片帧。
创建一个 figure
对象 h
,并初始化曲面图。自定义图窗坐标区。
h = figure; Z = peaks; surf(Z) axis tight manual ax = gca; ax.NextPlot = 'replaceChildren';
预分配一个包含 40 个元素的数组 M
来存储影片帧。
loops = 40; M(loops) = struct('cdata',[],'colormap',[]);
将图窗对象的 'Visible'
属性设置为 'off'
。将句柄 h
中的每个图窗捕获为一个单独帧,并将帧存储在 M
中。
h.Visible = 'off'; for j = 1:loops X = sin(j*pi/10)*Z; surf(X,Z) drawnow M(j) = getframe(h); end
将图窗的 'Visible'
属性设置为 'on'
。以每秒 12 帧的速度将 M
中的影片播放一次,并在 x 和 y 方向的偏移 30 个像素。指定句柄 h
以在当前图窗中播放影片。
h.Visible = 'on';
movie(h,M,1,12,[30 30 0 0]);
输入参数
n
— 播放影片的次数
1 (默认) | 数值标量 | 数值数组
在图窗中播放影片的次数,指定为数值数组。如果未指定 n
,movie
将只播放一次影片。如果 n
是负数,那么每个循环会先快进然后再倒播影片。
如果将 n
指定为一个向量,则第一个元素是影片播放次数,其余元素构成影片播放的帧列表。
例如,如果 M
由四个影片帧组成,并且 n
是包含元素 n = [10 4 4 2 1]
的数组,则 movie
将 M
中的影片播放十次,该影片包含四个帧,依次是第四帧、第四帧、第二帧和第一帧。
fps
— 每秒帧数
12 (默认) | 数值标量
每秒帧数,指定为数值标量。如果不指定 fps
,movie
将每秒播放 12 帧。如果您的计算机无法达到您指定的 fps
速度,它将尽可能快地播放影片。
loc
— 位置向量
数值向量
位置向量,指定为四元素数值数组 [x y 0 0]
,其中影片帧的左下角定位在数组中前两个元素指定的坐标上。loc
中指定的坐标相对于句柄 h 指定的图窗或坐标区的左下角,并且以像素为单位。movie
函数忽略 loc
的最后两个元素。
提示
movie
函数使用默认尺寸为 560×420 的图窗,而且不会调整图窗尺寸以适应帧偏大或偏小的影片。要适应其他框架尺寸,您可以重新调整图窗大小以适应影片。缓冲影片可将所有帧放入内存中。这样,在 Microsoft® Windows® 及其他平台上,一些很长的影片(数百帧)可能会耗尽内存,这取决于系统资源。这种情况下,可能会发出一条错误消息:
??? Error using ==> movie Could not create movie frame
您可以输入 Ctrl-C 终止影片。
版本历史记录
在 R2006a 之前推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)