Domanda

Voglio elaborare un video che mi registrare su un telefono Android cambiando il colore dei pixel. So come fare la trasformazione che voglio, ma non so il modo migliore di mettere tutto insieme.

Finora le cose che ho possono fare sono:

  • Ottenere un singolo fotogramma di un video come YCrCb (YUV)
  • Modifica i byte nella YCrCb come voglio
  • Convertire il YCrCb a matrice RGB
  • Convertire la matrice RGB per una bitmap

Come posso mettere tutto insieme e salvarlo indietro come un video che posso riprodurre su Android? Posso andare direttamente dalle informazioni YCrCb? O ho bisogno di convertire in RGB o qualche altro formato prima?

Non ho bisogno di fare questo in tempo reale, l'obiettivo sarebbe quello di registrare un video, salvarlo, quindi elaborare e salvare il video elaborato. Comunque io ho velocità in mente. Sono le loro librerie che posso usare per accelerare il processo? So che Android fornisce l'uso di OpenGL e I'v letto di ffmpeg, ma io sono sicuro della strada migliore da prendere.

Se qualcuno mi potrebbe punto nella giusta direzione, sarei grato! = D

Grazie !! = D

È stato utile?

Soluzione

I telai che si ottiene dalla fotocamera non sono compressi. Questo non è in genere il modo in cui il video viene memorizzato, in quanto fotogrammi non compressi sono troppo grandi per essere letti e visualizzati in tempo reale da un giocatore. Invece, si vuole fare codificare il YUV o RGB telai, in modo che i frame sono molto più piccoli e il carico di I / O durante la riproduzione è piccolo.

Il formato di codifica che si dovrebbe usare deve essere uno che il dispositivo in grado di decodificare in hardware, come la decodifica in CPU è anche un costo proibitivo. In questi giorni, si dovrebbe essere buona se si utilizza H.264 per il video e AAC per l'audio, e utilizzare un contenitore MP4. Purtroppo se si includono H.264 / AAC encoder (anche quelli open source) nella tua app e piano per fare soldi da esso, allora si può ottenere una visita dal MPEG LA , che potrebbe voler raccogliere da voi, dal momento che entrambi H.264 e AAC richiedono licenza. Credo che questo è evitato se si utilizza un codec che è già concesso in licenza e installata nel dispositivo, come quello che viene utilizzato dalla applicazione fotocamera per registrare. Non so se la piattaforma Android permette di accedere ai codec telecamera.

Per quanto riguarda le biblioteche, penso che libavcodec e libavformat dal progetto ffmpeg sono il più completo. Con queste librerie è possibile codificare / AAC file H.264 / MP4, assumendo il problema di licenza non riguarda te.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top