Я разрабатываю приложение для Android, и я использую Android SDK MediaPlayer
для воспроизведения некоторых видео в своем приложении. Когда я воспроизвожу видео в своем приложении, примерно один из пяти раз, звук воспроизводится без видео. Это не простая ошибка кодирования, потому что большую часть времени видео воспроизводится отлично.
Я считал, что состояние гонки в моем коде вызвало ошибку. Однако я добавил несколько отладочных инструкций, и все кажется правильно настроенным, когда видео не воспроизводится.
Я просмотрел веб-страницы и попытался найти решения, но ни один из них не был адекватным (см. ниже).
Кто-нибудь сталкивался с этим типом проблемы раньше? Если да, то чем вы занимались?
Похожие вопросы:
Видео MediaPlayer не воспроизводится
мультимедийный плеер Android показывает звук, но не видео
андроид видео, услышать звук, но нет видео
Некоторые детали:
- Я столкнулся с этой ошибкой на двух телефонах. На Samsung Charge видео воспроизводится в 80% случаев, а в 20% случаев - нет, но нет видео. На T-Mobile Comet это намного хуже; видео воспроизводится только в 10% случаев.
- Это не проблема с файлом, я пробовал различные видеофайлы и кодеки и получал те же самые проблемы.
- Это не проблема с носителем данных. Я пытался воспроизвести видео, когда он был сохранен на внутреннем хранилище и SD-карте, и не имеет никакого значения. Я даже пробовал читать некоторые файлы перед тем, как играть, надеясь, что система будет кэшировать его, но это тоже не помогает.
Update:
Я отлаживал это и просматривал 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 отправляется. Событие, если необходимо, будет отправляется один раз на дорожку.
Мне кажется, что я прошел долгий путь, но не ближе к поиску ответа... все еще расследую.