Проблем с възпроизвеждането на MediaMuxer с ExoPlayer

Използвам класа MediaMuxer, за да редактирам видео файл за възпроизвеждане с библиотеката на ExoPlayer. По принцип това, което правя, е извличане на видео кадри от mp4, декодиране на тези кадри, повторно кодиране на тези кадри и мултиплексиране с помощта на muxer.writeSampleData(..)

Всичко това е добре и мога успешно да възпроизвеждам видеоклип, след като това е направено с моята реализация на ExoPlayer, ДОКАТО продължителността на видеоклипа е >= ​​20 секунди. Проблемът с възпроизвеждането възниква, когато се опитвам да използвам видеоклип (.mp4), който е дълъг поне 20 секунди. Няма изведени грешки в регистрационните файлове или други изключения нито за обектите MediaMuxer, нито за ExoPlayer.

Проблемът с възпроизвеждането е странен, но се случва по абсолютно същия начин, независимо от дължината на видеоклипа >= 20 секунди. Когато възпроизвеждането достигне знака от 11 секунди (11 секунди във видеото), кадърът замръзва и регистрационните файлове на ExoPlayer показват, че състоянието на плейъра е преминало от „Готовност“ на „Буфериране“ и той остава в това състояние за неопределено време. Не се регистрират други грешки или друга подходяща информация.

Регистрационните файлове на ExoPlayer не отпечатват нищо полезно за проследяване на проблема и поради това не съм сигурен къде се крие проблемът. Някъде в кода за редактиране на видео, където извличам кадрите, декодирам кадрите, кодирам кадрите и ги комбинирам или в библиотеката на ExoPlayer? (оригиналното видео се възпроизвежда добре, независимо от дължината) Видеоклиповете, които се забиват на 11-тата секунда в моята реализация на ExoPlayer, се възпроизвеждат добре на MediaPlayer по подразбиране на моите устройства.

Някой има ли опит в правенето на нещо подобно? Имате ли някакви идеи къде може да е проблемът с възникналите проблеми или имате някакви допълнителни идеи как да отстраните грешки?


person Devsil    schedule 12.01.2016    source източник
comment
Някой има ли предложения?   -  person Devsil    schedule 13.01.2016


Отговори (1)


Проблемът беше, че декодерът записваше голяма част от извадката в някои случаи и моята реализация на exoplayer не успя да се справи с това, тъй като максималния размер на извадката, който бях задал, беше твърде нисък. Това беше коригирано чрез коригиране на максималния размер на извадката за декодера или изпълнението на екзоплейъра.

person Devsil    schedule 14.01.2016
comment
И така, колко бърз беше мултиплексорът при конвертирането на вашето видео? - person LostPuppy; 12.04.2016