2014-12-03 15 views
5

Vorrei aggiungere una funzione in cui un utente può registrare un video del gioco che sta giocando. Come faccio a fare questo?Come si registra un "gioco" (PyGame o Tk) in un video?

+1

Suppongo che pygame e tk non offrano gli algoritmi necessari per produrre un'enorme quantità di dati di immagine ogni secondo. Tuttavia, per i sistemi Linux c'è un modulo fotocamera integrato in PyGame che potrebbe, con un po 'di giocherellando, soddisfare le tue esigenze: http://www.pygame.org/docs/ref/camera.html –

+0

@PatricHartmann - La sua cattura immagini giusto? Suppongo di poter combinare queste immagini per ottenere un video. Qualche idea su come aggiungere suoni al video? (Non è predeterminato e varia in base all'input dell'utente, come un'auto che accelera o frena) – rohithpr

+0

Il problema è la velocità del suo output di immagini. Saresti giù su poche foto al secondo. –

risposta

2

Non ho implementato la soluzione a questo particolare problema personalmente, ma proverò a suggerirne uno. Ovviamente una qualsiasi delle soluzioni rallenterà il tuo programma cardinalmente, ma tecnicamente è possibile. Quindi, probabilmente vale la pena provare, che è possibile utilizzare pygame.image.tostring() sul fotogramma corrente, quindi solo scrivere (aggiungere) ogni fotogramma su un file. Quindi questo sarà in realtà il tuo video in un formato raw. Ora se vuoi un particolare formato video, dovresti semplicemente convertirlo, il modo migliore è usare ffmpeg (puoi chiamarlo prima dell'uscita del gioco con determinati parametri del gioco con subprocess.Popen("ffmpeg ...")). L'unico problema qui è che l'utente, che vuole registrare in questo modo, deve avere ffmpeg installato nel sistema, in modo che ffmpeg sia richiamabile dalla riga di comando della shell. Vantaggio di questo approccio: dovrebbe essere abbastanza veloce e non utilizza molta memoria extra, poiché si codifica una sola volta (ad esempio quando l'utente interrompe la registrazione o esce dal gioco) dal flusso binario.


Edit: questo è solo una descrizione ampia, naturalmente si dovrebbe scoprire anche i parametri di Wright per ffmpeg, come conteggio dei fotogrammi, dimensioni e così via, e, naturalmente, eliminare i dati grezzi, dal momento che può essere un file veramente grande.

+0

Sta catturando le immagini della superficie, giusto? Suppongo di poter combinare queste immagini per ottenere un video. Qualche idea su come aggiungere suoni al video? (Non è predeterminato e varia in base all'input dell'utente, come l'accelerazione o la frenatura di un'auto) – rohithpr

+0

@ praroh1 Non ho idea di come ricodificare il suono. Se dovessi fare una clip solo per me stesso, userei il microfone allo stesso tempo per catturare l'audio –

Problemi correlati