Пишите видеокадры прямо в файл, минуя рендеринг экрана - PullRequest
2 голосов
/ 02 марта 2012

Я делаю видео из последовательности сюжетов, используя VideoWriter. Это работает в основном нормально (после следующих советов в этот ответ ). Однако, похоже, что Matlab пытается визуализировать все 3000 кадров на экране последовательно после анимации, в результате чего мой оконный менеджер выходит из строя и компьютер останавливается на несколько минут.

Есть ли способ записи видеокадров прямо на диск, минуя рендеринг экрана? Кажется, что getframe в writeVideo(vid, getframe(f)) обязательно делает фигуру видимой; Есть ли способ избежать этого?

Ответы [ 3 ]

2 голосов
/ 03 марта 2012

Если у вас есть только 3000 кадров, вы можете сохранить их как изображения и сделать из них видео, используя что-то вроде ffmpegНе забудьте использовать формат без потерь для изображений, например PNG.

1 голос
/ 25 апреля 2013

Не используйте get frame, но используйте im2frame вместо

writerObj = VideoWriter('awesomeMovie.mp4', 'MPEG-4');
open(writerObj);
masterFrame = rand(10,10,3);
f = im2frame(masterFrame);
writeVideo(writerObj,f);
0 голосов
/ 19 сентября 2012

Использование avifile и addframe позволит вам создавать видео, а не отображать его на экране.Похоже, что это медленный способ сделать что-то.

Вот пример, основанный на упомянутом посте:

mov = avifile('myPeaks2.avi','fps',15);
set(gcf, 'visible', 'off')

for k=1:20
    surf(sin(2*pi*k/20)*Z,Z);
    mov = addframe(mov, gcf);
end
mov = close(mov);

Конечно, этот метод устарел, так что в итоге вы выиграли 'не сможет его использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...