Probleme mit Film-Datei-Erstellung in MATLAB
Ich versuche, um einen Film zu erstellen, indem die Schleife durch die frames in MATLAB.
Bezieht sich auf mathworks.com Dokumentation http://www.mathworks.com/help/techdoc/ref/movie.html, ich habe es geschafft die zu animieren, eine Handlung. Jedoch Probleme entstehen, wenn ich Versuch zu speichern den Film in eine avi-Datei.
Sowohl die avifile
und VideoWriter
Methoden aus https://stackoverflow.com/a/8038540/818608, führte zu dem gleichen Fehler.
Obwohl die animation läuft wunderbar, die gespeicherten Films besteht nur noch aus einem festen Rahmen, und das zu Zeiten, die screen-capture umfasst ein overlay meiner hintergrund-web-browser.
Vielen Dank im Voraus.
Unten ist der code, den ich verwendet und die Rahmen, die gefrorenen auf die avi ist unten verlinkt.
Z = peaks; surf(Z);
axis tight
set(gca,'nextplot','replacechildren');
vid = VideoWriter('myPeaks2.avi');
vid.Quality = 100;
vid.FrameRate = 15;
open(vid);
for k = 1:20
surf(sin(2*pi*k/20)*Z,Z)
writeVideo(vid, getframe(gcf));
end
close(vid);
winopen('myPeaks2.avi')
Ich habe meinen Beitrag aktualisiert, um code enthalten, verwendet. Die animation läuft über die
for
loop, und ich sehe alle Bilder. Allerdings, wenn ich öffnen Sie die gespeicherte avi, ich sehe nur einen festen Rahmen die ganze Zeit, und ich habe ein screenshot von der frame oben.InformationsquelleAutor flamearchon | 2011-12-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie Folgendes:
Es enthält explizite Griffe verwenden, statt implizit. Viele chaos verursacht in Matlab weil Menschen dazu neigen, die impliziten, wie "gcf", "gca" sollte komplett herausgenommen aus der Sprache, IMHO.
InformationsquelleAutor Andrey Rubshtein
Hatte ich diese (sowie eine eng Verwandte) problem heute. Diese stackoverflow-Thema war einer der top-Suchmaschinen-Ergebnisse, so dass ich dachte, ich würde in Zukunft Forscher mit einigen weiteren Infos.
War ich mit einem
VideoWriter
- Objekt, und rufen Sieframe=getframe(fig_handle)
speichern in jedem frame des Videos. Wie in der Frage zu diesem Thema, nur 1 frame gespeichert wurde. Darüber hinaus, wird der hintergrund hinter der Figur gesehen werden könnte, durch die es, als ob die Figur war teilweise transparent.Ändern rendert Maler oder zbuffer gearbeitet. (
set(gcf,'renderer','zbuffer')
zum Beispiel.)Ich brauchte openGL-rendering-obwohl, seit der Film verwendet Transparenz. Der Schlüssel zu dieser Arbeit war der Einsatz von
Diese umgangen, was war wohl ein Problem mit dem senden der Grafik und von der Grafikkarte (ich weiß es nicht sicher... es funktionierte, und ich zog auf).
getframe
in einer Schleife). Eine andere Lösung ist die Verwendung des undokumentiertenhardcopy
Dies sollte die akzeptierte Antwort. Um zusammenzufassen, ist in @Andrej die Antwort, ersetzen
f = figure();
mitf = figure('renderer', 'zbuffer');
.InformationsquelleAutor tmpearce
Dieser funktioniert perfekt für mich.
Was ist, wenn Sie versucht, indem eine
drawnow
in der Schleife nach dersurf
? (Dies spült alle Veranstaltungen und Aktualisierungen Ihrem-Grafik-Abbildung).Könnte es vielleicht sein, Ihre Video-player oder die codecs? Sie könnten versuchen VLC/Windows Media Player/etc etc?
InformationsquelleAutor mathematical.coffee
Habe ich es geschafft, um es an die Arbeit zwingen der Abbildung frames unsichtbar zu sein, als pro http://www.mathworks.com/support/tech-notes/1200/1204.html:
Am Ende des Tages, es wird keine Komprimierung verwendet wurde, wie ich nicht haben, Indeo5. Ist es richtig, zu sagen, wir können ausschließen, Komprimierung, da das problem?
InformationsquelleAutor flamearchon
Haben Sie versucht, ändern Sie Ihre monitor-Einstellungen auf 16 bit Farbtiefe? http://www.mathworks.com/matlabcentral/newsreader/view_thread/257389
Der link ist nur um zu zeigen, dass die Lösung - ändern Sie Ihre Einstellungen des Monitors auf 16-bit-Farbe - wurde gezeigt, dass die Arbeit in der Vergangenheit und dokumentiert wurde, auf matlabcentral für mehrere Jahre sowie neu aktualisiert.
InformationsquelleAutor user2145660
Hatte ich auch das problem von nur einem frame gespeichert werden, heute. Ändern der framerate von:
denen eine Bewertung zu 3, zu einfach:
Ich kann nicht sehen, warum das irgendeinen Unterschied machen würde, aber es hat prompt funktioniert nach dem ändern dieser.
EDIT: Stellt sich heraus, es war VLC, die können nicht mit sehr niedrigen Frameraten. Windows Media Player gespielt es gut keine Sorge.
InformationsquelleAutor Chris Jongsma