Calling videos from a folder in every iteration

1 view (last 30 days)
clc;
clear all;
close all;
number=45;
strng=num2str(number);
Folder = 'D:\project\Fingerspelling pics\';
for k=1:length(strng)
I(k)=str2num(strng(k));
aFile = fullfile(Folder, 'I(k).mp4');
videoFReader = vision.VideoFileReader(aFile);
videoPlayer = vision.VideoPlayer;
while ~isDone(videoFReader)
frame = step(videoFReader);
step(videoPlayer,frame);
end
end
My aim is to play the 4th and 5th video from the 'Folder' described in the code above. But when I am running the code it is producing error, since there is no any folder with the name I(k) in the 'Folder'. I want that as the value of I(k) changes in every iteration, correspondingly the video should be played from the folder. For example :- Here value of I(k) will be 4 and 5 of type 'double' in corresponding iterations and I have also my files 4.mp4 and 5.mp4 saved in 'Folder'. Please tell me how I can call and play the videos from 'Folder' using I(k) values.

Accepted Answer

Sindar
Sindar on 20 Jan 2020
Putting I(k) in quotes makes Matlab read it as a char instead of a variable. It is literally looking for I(k).mp4. To use the value of I(k), simply put (note the double quotes):
aFile = fullfile(Folder, I(k) + ".mp4");
Matlab automatically converts the number in I(k) into a string for addition. (But, doesn't do the same for adding to a char like '.mp4')
But, there's actually a way to simplify your code a bit, since you can directly index into the strng char:
clc;
clear all;
close all;
number=45;
strng=num2str(number);
Folder = 'D:\project\Fingerspelling pics\';
for k=1:length(strng)
aFile = fullfile(Folder, [strng(k) '.mp4']);
videoFReader = vision.VideoFileReader(aFile);
videoPlayer = vision.VideoPlayer;
while ~isDone(videoFReader)
frame = step(videoFReader);
step(videoPlayer,frame);
end
end
Here, the addition is done by concatenating chars..

More Answers (0)

Community Treasure Hunt

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

Start Hunting!