Save a video from video frames and text

6 views (last 30 days)
Hi everyone,
I have a video generated from an external software I want to insert dynamic text on each frame. I was able to do so in Matlab with the code below. However, I am clueless about the way to save the new video in a .mp4 or .avi file. I would like to have it in such format so that I can open it from any video readers.
Can anyone help?
Thank you! :-)
% Import video generated from an external software
v = VideoReader('video_L4_L8_Jan_cc25.mp4');
% Import csv file with metadata of each image
t = readtable('list_L4_L8_Jan_cc25.csv');
% Generate a video with the ID and time of acquisition of each image
FrameRate = 1;
set(gcf,'position',[10 10 30 30]);
axes1 = axes('position', [.05, .05, .9 , .9])
while hasFrame(v)
vFrames1 = readFrame(v);
imgNb = v.CurrentTime+1; % Nb of image displayed. +1 becaue CurrentTime starts couting at 0
image(vFrames1, 'Parent', axes1);
text(.5, 10, t.LANDSAT_SCENE_ID(imgNb), 'fontsize' , 14, 'Color' , 'w', 'Parent' , axes1);
text(200, 10, t.DATE_ACQUIRED(imgNb), 'fontsize' , 14, 'Color' , 'w', 'Parent' , axes1);
axes1.Visible = 'off';

Accepted Answer

Dave Behera
Dave Behera on 23 Aug 2016
The writevideo function can be used to write videos from an array to video file (.avi format supported). See this link:
  1 Comment
Alice on 24 Aug 2016
Yay, thanks! For anyone interested, this is the way to use the VideoWriter function and get the desired video as detailed in the initial question:
k = VideoWriter('videoName'); k.FrameRate = 2; open(k);
for i = 1: length(frame for video) CODE FOR VIDEO FRAME AND TEXT HERE
frame = getframe; writeVideo(k,frame); end

Sign in to comment.

More Answers (0)


Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!