У меня есть 2 видео, которые я хотел бы играть бок о бок в разделенном экране. Они имеют одинаковую продолжительность и размеры. Я нашел код, разработанный несколько лет назад, чтобы выполнить эту работу. Проблема в том, что она полна ошибок, возможно, из-за того, что я использую более новую версию Matlab (2014a). Ошибки начинаются с (% name нового avi-файла).Matlab - объединить два видео в одно видео с разделенным экраном
Может кто-нибудь пожалуйста, попытаться исправить:
% select two files:
[filename1,pathname1] = uigetfile('.avi','pick first AVI file');
[filename2,pathname2] = uigetfile('.avi','pick second AVI file');
file1 = fullfile(pathname1,filename1);
file2 = fullfile(pathname2,filename2);
pdMovie1 = aviread(file1);
pdMovie2 = aviread(file2);
fileinfo1 = aviinfo(file1);
fileinfo2 = aviinfo(file2);
% check if AVI files have the same length and height:
if fileinfo1.NumFrames~=fileinfo2.NumFrames || ...
fileinfo1.Height~=fileinfo2.Height
errordlg('files are not compatible!')
else
% inspired by Herbert Ramoser in Message-ID:
% <[email protected]>
for i=1:size(pdMovie1,2)
output(i).cdata = [pdMovie1(i).cdata, pdMovie2(i).cdata];
output(i).colormap = pdMovie1(i).colormap;
end;
% name of the new avi file:
[pathstr,name,ext,versn] = fileparts(filename1);
newmoviename = [pathname1,name,'_combined', ...
num2str(fileinfo1.FramesPerSecond;),ext];
% create the avi file:
movie2avi(output, newmoviename, ...
'fps', fileinfo1.FramesPerSecond;, ...
'compression', 'none');
close
end
Спасибо, воспроизведение работает отлично, но как его сохранить как файл .avi? – Mosawi
Я отредактировал свой ответ. – SamuelNLP
Еще раз спасибо, но теперь я получаю следующую ошибку, любой шанс ее можно исправить? Неопределенная функция hasFrame для входных аргументов типа «VideoReader». Ошибка в videosidebyside (строка 11) в то время как hasFrame (VID1) && hasFrame (VID2) в то время как hasFrame (VID1) && hasFrame (VID2) – Mosawi