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