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