2017-08-21 2 views
2

Ich habe einige Zeitreihendaten, die ich in Filmen erstellen möchte. Die Daten könnten 2D (ca. 500x10000) oder 3D (500x500x10000) sein. Für 2D-Daten sind die Filmrahmen einfach Linienplot mit plot, und für 3D-Daten können wir surf, imagesc, contour usw. verwenden. Dann erstellen wir eine Videodatei mit diesen Rahmen in MATLAB und komprimieren dann die Videodatei mit ffmpeg.Schnelle Film-Erstellung mit MATLAB und ffmpeg

Um es schnell zu machen, würde man versuchen, nicht alle Bilder darzustellen, noch die Daten auf der Festplatte zu speichern und sie dann während des Prozesses wieder zu lesen. Normalerweise würde man getframe oder VideoWriter verwenden, um einen Film in MATLAB zu erstellen, aber sie scheinen leicht kompliziert zu werden, wenn man versucht, die Zahlen nicht auf dem Bildschirm anzuzeigen. Einige schlagen sogar vor, in versteckten Figuren zu plotten und dann als Bilder auf der Platte als .png Dateien zu speichern, dann komprimieren sie sie unter Verwendung von ffmpeg (z. B. mit x265 Encoder in .mp4). Speichern der Ausgabe von imagesc in meinem iMac dauerte 3,5 Sekunden das erste Mal, dann 0,5s nach. Ich finde es auch nicht schnell genug, um so viele Dateien auf Festplatte zu speichern, nur um ffmpeg zu fragen, sie wieder zu lesen. Man könnte die Daten hardcopy als this schon sagt, aber ich bin nicht sicher, ob es unabhängig von der Darstellungsmethode funktioniert (zum Beispiel plot, surf etc.) und wie man würde Übertragung von Daten über zu ffmpeg mit minimalem Plattenzugriff.

Dies ist ähnlich wie this, aber immovie ist zu langsam. Dieser Beitrag 3 ist ähnlich, aber befürwortet das Schreiben von Bildern auf die Festplatte, dann lesen sie (langsam IO).

Antwort

0

vielleicht, was Sie versuchen, Ihre Daten in ein Bild zu tun ist, zu konvertieren, indem die gleiche Art von Operation zu tun, die surf oder imagesc oder contour tun und dann in eine Datei direkt zu schreiben, das würde hält all Daten im Speicher, bis das Schreiben benötigt wird.

ich wenig Erfahrung mit realen Bildern hatte, die auch hier funktionieren konnte: ich sah, dass imshow viel Zeit in Anspruch nahm nennen, aber die CData eine presetted Figur durch die imshow Funktion nahm um 5 ms erstellt ändern, so, vielleicht könnten Sie Stellen Sie eine Figur mit einer der Funktionen, die Sie mögen, und aktualisieren Sie die zugrunde liegenden XData, YData usw., so dass die Figur auf die gleiche Weise aktualisiert wird?

viel Glück!

+0

Ich kann nicht glauben, dass Sie tatsächlich diesen fast toten Posten gegraben haben. Nett! Haben Sie versucht, Ihren Vorschlag zu implementieren, um zu sehen, ob er funktioniert? – hyiltiz

Verwandte Themen