Я использую класс MediaMuxer для редактирования видеофайла для воспроизведения с помощью библиотеки ExoPlayer. В основном то, что я делаю, это извлечение видеокадров из mp4, декодирование этих кадров, повторное кодирование этих кадров и мультиплексирование с использованием muxer.writeSampleData(..)
Это все хорошо, и я могу успешно воспроизвести видео после того, как это будет сделано с моей реализацией ExoPlayer, ДО ТОГО, КАК продолжительность видео> = 20 секунд. Когда я пытаюсь использовать видео (.mp4) продолжительностью не менее 20 секунд, возникает проблема с воспроизведением. В журналах нет ошибок или каких-либо других исключений ни для объектов MediaMuxer, ни для ExoPlayer.
Проблема с воспроизведением странная, но происходит точно так же, независимо от длины видео >= 20 секунд. Когда воспроизведение достигает отметки 11 секунд (11 секунд видео), кадр останавливается, а журналы ExoPlayer показывают, что состояние проигрывателя изменилось с «Готово» на «Буферизация» и остается в этом состоянии на неопределенный срок. Никакие другие ошибки или другая важная информация не регистрируются.
Журналы ExoPlayer не печатают ничего полезного для отслеживания проблемы, и из-за этого я не уверен, в чем проблема. Где-то в коде редактирования видео, где я извлекаю кадры, декодирую кадры, кодирую кадры и мультиплексирую их, или в библиотеке ExoPlayer? (исходное видео воспроизводится нормально независимо от длины) Видео, которые застревают на 11-секундной отметке в моей реализации ExoPlayer, отлично воспроизводятся на моих устройствах MediaPlayer по умолчанию.
Есть ли у кого-нибудь опыт в создании чего-то подобного? У вас есть какие-либо идеи о том, где может быть проблема с возникшими проблемами, или есть какие-либо дополнительные идеи о том, как это отладить?