Я разрабатываю приложение для Android и использую Android SDK MediaPlayer
для воспроизведения некоторых видео в моем приложении. Когда я воспроизводю видео в своем приложении, примерно один из пяти раз звук воспроизводится без видео. Это не простая ошибка кодирования, потому что в большинстве случаев видео воспроизводится идеально.
Я посчитал, что ошибка была вызвана состоянием гонки в моем коде. Однако я добавил несколько отладочных инструкций, и, кажется, все настроено правильно, когда видео не воспроизводится.
Я просканировал Интернет и ТАК пытался найти решения, но ни одно из них не было адекватным (см. Ниже).
Кто-нибудь сталкивался раньше с подобными проблемами? Если да, то что вы сделали?
Подобные вопросы:
MediaPlayer Video не воспроизводится
Android-медиаплеер показывает звук, но не видео
Android-видео, слышит звук, но нет видео
Дополнительная информация:
Обновление:
Я отлаживал это и просматривал logcat. Я обнаружил, что когда видео работает, в logcat появляется что-то вроде следующего:
09-28 00:09:03.651: VERBOSE/PVPlayer(10875): setVideoSurface(0x65638)
Но когда видео не воспроизводится, похоже, что там пустая запись:
09-28 00:03:35.284: VERBOSE/PVPlayer(10875): setVideoSurface(0x0)
Обновление 2:
Когда видео не работает для воспроизведения используется функция MediaPlayer.OnInfoListener с параметрами what == MEDIA_ERROR_UNKNOWN (0x1)
и extra == 35
. Я просмотрел кодовую базу Android, чтобы попытаться определить, что означает неизвестная ошибка 35. Я наткнулся на файл pv_player_interface.h, который указывает, что код ошибки 35 соответствует так называемому PVMFInfoTrackDisable
. Я погуглил этот термин, который привел меня к файлу под названием pvmf_return_codes.pdf
. Этот файл дал мне следующее непонятное объяснение:
4.34. PVMFInfoTrackDisable
Уведомление о том, что конкретный трек отключен. Это для каждой дорожки. Для несжатых аудио / видео форматов в процессе выбора треков, доступных в контенте, если декодер не поддерживает трек, отправляется событие PVMFInfoTrackDisable. Событие, если необходимо, будет отправлено один раз для каждой дорожки.
Я чувствую, что прошел долгий путь, но я не приблизился к поиску ответа ... все еще ищу.