Как создать MP4-видео из Octave / через сюжет

Я обнаружил, что моя проблема была неправильной if (leaf = NULL) {...}, где она должна была быть if (leaf == NULL){...}

Проверьте эти предупреждения компилятора!

1
задан Clinton Winant 25 February 2019 в 15:58
поделиться

1 ответ

Ваш первоначальный код занял 15,5 с на моей машине. Первым шагом оптимизации является сохранение графика и обновление данных xdata и y:

t = linspace (0, 10, 100);
for k = 1:numel(t) 

  y = sin (t(1:k));

  if (k == 1)
    p = plot (t(1:k), y, 'linewidth', 1);
    axis ([0, 10, -1, 1]);
  else
    set (p, "xdata", t(1:k));
    set (p, "ydata", y);
  endif
  fname = sprintf ("img%03i.png", k);
  print ("-dpng", "-r100", fname);
endfor

Это займет 13,1 с на моем компьютере. Далее мы можем использовать getframe:

out_dir = "temp_img";
mkdir (out_dir);
t = linspace (0, 10, 100);
for k = 1:numel(t) 
  y = sin (t(1:k));
  if (k == 1)
    p = plot (t(1:k), y, 'linewidth', 1);
    axis ([0, 10, -1, 1]);
  else
    set (p, "xdata", t(1:k));
    set (p, "ydata", y);
  endif
  fname = fullfile (out_dir, sprintf ("img%03i.png", k));
  imwrite (getframe (gcf).cdata, fname);
endfor
cmd = sprintf ("ffmpeg -framerate 20 -i ./%s/img%%03i.png -vf scale=1080:-1 Example1.mp4", out_dir)
system (cmd)

Это займет 3,7 с даже при запуске ffmpeg.

Имейте в виду, что если вы создаете изображения (я думаю, как ваши вихревые видео), у вас есть Пройдите сюжет

0
ответ дан Andy 25 February 2019 в 15:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: