Sto cercando il modo più veloce per decodificare i frame di un video locale mpeg-4 su iPhone. Sono semplicemente interessato ai valori di luminanza dei pixel in ogni 10 fotogramma. Non ho bisogno di rendere il video da nessuna parte.Decodifica i frame video su iPhone GPU
Ho provato ffmpeg, AVAssetReader, ImageAssetGenerator, OpenCV e MPMoviePlayer ma sono tutti troppo lenti. La massima velocità che ottengo è ~ 2x (2 minuti di video scansionati in un minuto). Vorrei qualcosa di più vicino a 10x.
Supponendo che i miei tentativi sopra non abbiano utilizzato la GPU, esiste un modo per raggiungere il mio obiettivo con qualcosa che viene eseguito sulla GPU? OpenGL sembra che sia principalmente per l'output di rendering ma l'ho visto usato come filtro per i video in arrivo. Forse è un'opzione?
Grazie in anticipo!
mi sembra che debba essere un partecipante WWDC 2011 per ottenere quel campione. Continuo a preoccuparmi che questa sia effettivamente la transcodifica in tempo reale. Voglio ottenere 15x velocità (15 minuti di video scansionati in 1 minuto). Penso che il collo della bottiglia sia nella decodifica del fotogramma. –
@simon.d - Descrivo la tecnica utilizzata nell'esempio ChromaKey nella mia risposta qui: http://stackoverflow.com/a/9704392/19679, e puoi prendere il mio codice GPUImage per vederlo in azione per la codifica dei film. Non ho ancora aggiornato il mio codice di lettura del film per utilizzare caricamenti di texture veloci, però. Dato che i dispositivi iOS dispongono di hardware dedicato per la decodifica H.264, mi sento ragionevolmente certo a dire che non si otterrà un parsing più veloce per i film rispetto all'utilizzo di AVFoundation con i caricamenti di texture veloci iOS 5.0. –
Il codice di esempio RosyWriter di Apple mostra anche questo AVCaptureSession -> OpenGL link. Vedi [qui] (https://developer.apple.com/library/ios/samplecode/RosyWriter/Introduction/Intro.html). – bcattle