Poszukuję najszybszego sposobu dekodowania lokalnych klatek wideo mpeg-4 na telefonie iPhone. Interesuje mnie po prostu wartość luminancji pikseli w każdej dziesiątej klatce. Nie muszę renderować wideo w dowolnym miejscu.Dekodowanie klatek wideo na iPhonie GPU
Próbowałem już ffmpeg, AVAssetReader, ImageAssetGenerator, OpenCV i MPMoviePlayer, ale wszystkie są zbyt wolne. Najszybszą możliwą szybkością jest ~ 2x (2 minuty wideo zeskanowane w ciągu minuty). Chciałbym coś bliżej 10x.
Zakładając moje próby powyżej nie wykorzystują GPU, czy jest jakiś sposób, aby osiągnąć swój cel z czymś, co działa na GPU? Wygląda na to, że OpenGL służy głównie do renderowania danych wyjściowych, ale widziałem, że był używany jako filtr dla przychodzących wideo. Może to opcja?
Z góry dziękuję!
Bummer wygląda na to, że potrzebuję być uczestnikiem WWDC 2011, aby otrzymać tę próbkę. Nadal martwię się, że to jest transkodowanie w czasie rzeczywistym. Chcę uzyskać 15-krotne prędkości (15 minut wideo zeskanowanego w ciągu 1 minuty). Myślę, że szyjka butelki znajduje się w dekodowaniu ramki. –
@imon.d - opisuję technikę zastosowaną w przykładzie ChromaKey w mojej odpowiedzi tutaj: http://stackoverflow.com/a/9704392/19679, i możesz pobrać mój kod GPUImage, aby zobaczyć to w akcji do kodowania filmów. Jednak nie zaktualizowałem jeszcze kodu do czytania filmu, aby korzystać z szybkich transferów tekstur. Z uwagi na to, że urządzenia z iOS mają dedykowany sprzęt do dekodowania H.264, wydaje mi się dość pewne, że nie otrzymasz szybszego analizowania filmów niż użycie AVFoundation z szybkim przesyłaniem tekstur iOS 5.0. –
Przykładowy kod Apple RosyWriter demonstruje również to łącze AVCaptureSession -> OpenGL. Zobacz [tutaj] (https://developer.apple.com/library/ios/samplecode/RosyWriter/Introduction/Intro.html). – bcattle