2014-12-03 8 views
5

Ich möchte eine Funktion hinzufügen, mit der ein Benutzer ein Video des Spiels, das er spielt, aufnehmen kann. Wie mache ich das?Wie zeichnest du ein "Spiel" (PyGame oder Tk) in ein Video ein?

+1

Ich denke, dass pygame und tk nicht die Algorithms bieten, die Sie benötigen, um jede Sekunde eine so große Menge an Bilddaten auszugeben. Für Linux-Systeme gibt es jedoch ein in PyGame integriertes Kameramodul, das mit ein wenig Geschicklichkeit Ihren Bedürfnissen entsprechen kann: http://www.pygame.org/docs/ref/camera.html –

+0

@PatricHartmann - Seine Erfassung Bilder richtig? Ich nehme an, ich könnte diese Bilder kombinieren, um ein Video zu bekommen. Irgendwelche Gedanken darüber, wie ich dem Video Sound hinzufügen kann? (Es ist nicht vorbestimmt und variiert basierend auf der Benutzereingabe, wie ein Auto beschleunigt oder bremst) – rohithpr

+0

Das Problem ist die Geschwindigkeit seiner Bildausgabe. Du würdest auf ein paar Bilder pro Sekunde fallen. –

Antwort

2

Ich habe die Lösung für dieses spezielle Problem nicht persönlich implementiert, aber ich werde versuchen, einen Vorschlag zu machen. Natürlich wird jede der Lösungen Ihr Programm kardinal verlangsamen, aber technisch ist es möglich. Also was ist es wahrscheinlich wert, zu versuchen, dass Sie pygame.image.tostring() auf Ihrem aktuellen Frame verwenden könnten, dann schreiben Sie einfach (anhängen) jeden Frame an eine Datei. Das wird also dein Video in einem Rohformat sein. Wenn Sie nun ein bestimmtes Videoformat wünschen, sollten Sie es einfach konvertieren, am besten verwenden Sie ffmpeg (Sie können es vor dem Spiel mit bestimmten Parametern aus Ihrem Spiel mit subprocess.Popen("ffmpeg ...") aufrufen). Das einzige Problem hier ist, dass der Benutzer, der auf solche Weise aufnehmen möchte, ffmpeg im System installiert haben muss, damit ffmpeg über die Shell-Kommandozeile aufgerufen werden kann. Vorteil dieses Ansatzes - er sollte ziemlich schnell sein und nicht viel zusätzlichen Speicher benötigen, da Sie nur einmal (zum Beispiel wenn der Benutzer die Aufzeichnung beendet oder das Spiel beendet) aus dem binären Strom codieren.


bearbeiten: das ist nur eine allgemeine Beschreibung, natürlich sollten Sie auch für ffmpeg die wright Parameter herauszufinden, wie Bildzählwertes, Größe und so weiter, und natürlich die Rohdaten löschen, da es kann eine wirklich große Datei sein.

+0

Es erfasst Bilder der Oberfläche richtig? Ich nehme an, ich könnte diese Bilder kombinieren, um ein Video zu bekommen. Irgendwelche Gedanken darüber, wie ich dem Video Sound hinzufügen kann? (Es ist nicht vorbestimmt und variiert basierend auf den Benutzereingaben, wie ein Auto beschleunigt oder bremst) – rohithpr

+0

@ praroh1 Ich nicht nichts, wie Ton zu recod. Wenn ich nur einen Clip für mich machen würde, würde ich gleichzeitig Mikrofone verwenden, um Audio aufzunehmen –