Използвам класа MediaMuxer, за да редактирам видео файл за възпроизвеждане с библиотеката на ExoPlayer. По принцип това, което правя, е извличане на видео кадри от mp4, декодиране на тези кадри, повторно кодиране на тези кадри и мултиплексиране с помощта на muxer.writeSampleData(..)
Всичко това е добре и мога успешно да възпроизвеждам видеоклип, след като това е направено с моята реализация на ExoPlayer, ДОКАТО продължителността на видеоклипа е >= 20 секунди. Проблемът с възпроизвеждането възниква, когато се опитвам да използвам видеоклип (.mp4), който е дълъг поне 20 секунди. Няма изведени грешки в регистрационните файлове или други изключения нито за обектите MediaMuxer, нито за ExoPlayer.
Проблемът с възпроизвеждането е странен, но се случва по абсолютно същия начин, независимо от дължината на видеоклипа >= 20 секунди. Когато възпроизвеждането достигне знака от 11 секунди (11 секунди във видеото), кадърът замръзва и регистрационните файлове на ExoPlayer показват, че състоянието на плейъра е преминало от „Готовност“ на „Буфериране“ и той остава в това състояние за неопределено време. Не се регистрират други грешки или друга подходяща информация.
Регистрационните файлове на ExoPlayer не отпечатват нищо полезно за проследяване на проблема и поради това не съм сигурен къде се крие проблемът. Някъде в кода за редактиране на видео, където извличам кадрите, декодирам кадрите, кодирам кадрите и ги комбинирам или в библиотеката на ExoPlayer? (оригиналното видео се възпроизвежда добре, независимо от дължината) Видеоклиповете, които се забиват на 11-тата секунда в моята реализация на ExoPlayer, се възпроизвеждат добре на MediaPlayer по подразбиране на моите устройства.
Някой има ли опит в правенето на нещо подобно? Имате ли някакви идеи къде може да е проблемът с възникналите проблеми или имате някакви допълнителни идеи как да отстраните грешки?