Documentation

writeVideo

Write video data to file

Syntax

  • writeVideo(v,img)
  • writeVideo(v,frame)
    example

Description

writeVideo(v,img) writes data from an array to the video file associated with v.

example

writeVideo(v,frame) writes one or more movie frames typically returned by the getframe function.

You must call open(v) before calling writeVideo.

Examples

collapse all

Write Image to Motion JPEG 2000 File

Write an RGB image to a Motion JPEG 2000 file with lossless compression.

Create an array containing data from the sample still image, peppers.png.

A = imread('peppers.png');

Create a VideoWriter object for a new video file. Use the 'Archival' profile to specify a Motion JPEG 2000 file with lossless compression.

v = VideoWriter('myFile','Archival');

Verify the type of video compression for the new file.

v.VideoCompressionMethod
ans =

Motion JPEG 2000

Open the video file for writing. Then, write the image data in A to the file.

open(v)
writeVideo(v,A)

Close the video file.

close(v)

Write Indexed Image to AVI File

Read image and colormap data from the sample indexed image file, corn.tif.

[X,map] = imread('corn.tif');

Create a VideoWriter object for a new indexed AVI file.

v = VideoWriter('myIndexed.avi','Indexed AVI');

Assign the colormap data to the Colormap property of v.

v.Colormap = map;

Open the file for writing. After you open the file, you cannot change the properties of v.

open(v)

Write the image data in X to the video file. Then, close the file.

writeVideo(v,X)
close(v)

Convert MPEG-4 to AVI File

Convert the example file, xylophone.mp4, to an uncompressed AVI file.

Create objects to read and write the video, and open the AVI file for writing.

reader = VideoReader('xylophone.mp4');
writer = VideoWriter('transcoded_xylophone.avi', ...
                        'Uncompressed AVI');

writer.FrameRate = reader.FrameRate;
open(writer);

Read and write each frame.

while hasFrame(reader)
   img = readFrame(reader);
   writeVideo(writer,img);
end

close(writer);

Create AVI File from Animation

Write a sequence of frames to a compressed AVI file named peaks.avi.

Prepare the new file.

v = VideoWriter('peaks.avi');
open(v);

Generate initial data and set axes and figure properties.

Z = peaks;
surf(Z); 
axis tight manual 
set(gca,'nextplot','replacechildren'); 

Create a set of frames and write each frame to the file.

for k = 1:20 
   surf(sin(2*pi*k/20)*Z,Z)
   frame = getframe;
   writeVideo(v,frame);
end

close(v);

Input Arguments

collapse all

v — Input VideoWriter objectVideoWriter object

Input VideoWriter object. Use VideoWriter to create the object.

img — Values representing grayscale or RGB color images2-D array | 3-D array | 4-D array

Values representing grayscale or RGB color images, specified as a 2-D, 3-D, or 4-D array:

  • For a single grayscale, monochrome, or indexed image, img must be two dimensional: height-by-width

  • For a single truecolor (RGB) image, img is three dimensional: height-by-width-by-3.

  • For a sequence of grayscale images, img is four dimensional:. height-by-width-by-1-by-frames. The height and width must be consistent for all frames within a file.

  • For a sequence of RGB images, img is four dimensional: height-by-width-by-3-by-frames. The height and width must be consistent for all frames within a file.

When creating AVI or MPEG-4 files:

  • img is an array of single, double, or uint8 values representing one or more grayscale or RGB color images, which writeVideo writes as one or more RGB video frames.

  • Data of type single or double must be in the range [0,1], except when writing indexed AVI files.

When creating Motion JPEG 2000 files:

  • img is an array of uint8, int8, uint16, or int16 values representing one or more monochrome or RGB color images.

Data Types: single | double | int8 | int16 | uint8 | uint16

frame — Frame data1-by-1 structure array | 1-by-F array of structures

Frame data, specified as a 1-by-1 structure array representing a single frame, or a 1-by-F array of structures representing multiple frames. Each frame contains two fields: cdata and colormap. The frame array is typically returned by the getframe function.

If colormap is not empty, then each element of cdata should be a 2-D (height-by-width) array. The height and width must be consistent for all frames within a file.

colormap can contain a maximum of 256 entries. Each element of colormap must be in the range [0,1].

When you create a VideoWriter object. the profile input and the size of cdata determine how writeVideo uses frame.

profile of VideoWriter objectSize of each element of cdataBehavior of writeVideo

'Indexed AVI'

2-D (height-by-width)Use frame as provided.
'Grayscale AVI'2-D (height-by-width)Use frame as provided. colormap should be empty.

All other profiles

2-D (height-by-width)Construct RGB image frames using the colormap field
3-D (height-by-width-by-3)Ignore the colormap field. Construct RGB image frames using the cdata field

Data Types: struct

More About

See Also

| | |

Introduced in R2010b

Was this topic helpful?