Проблема с воспроизведением видео на Android - PullRequest
0 голосов
/ 26 декабря 2011

Я разрабатываю приложение на Android, которое активно использует воспроизведение видео (интерактивный фильм), которое уже есть на рынке.

Проблема в том, что воспроизведение видео не работает на Samsung Galaxy Gio (2.3.3), хотя оно работает на старых моделях с меньшим разрешением.

Кажется, есть проблема с кодеком, так как я попытался вручную загрузить видео с медиаплеером по умолчанию, и он не может воспроизвести его.У других медиаплееров с этим нет проблем.

Видео кодируется с использованием Handbrake с MPEG-4 (FFmpeg) с разрешением 800x480.

Это дамп logcat с ошибками

12-26 14:04:43.269: E/QCvdec(95): get_parameter: unknown param 0ff7a347
12-26 14:04:43.269: E/VideoMIO(95): AndroidSurfaceOutput::setParametersSync()  VIDEO ROTATION 0
12-26 14:04:43.269: E/QCvdec(95): Setparameter: unknown param 117440513
12-26 14:04:43.459: E/QCvdec(95): Omx Flush issued when vdec is not initialized yet.
12-26 14:04:43.459: E/(95): profile_and_level_indication =  3
12-26 14:04:43.459: E/(95): video_object_type_indication =  1
12-26 14:04:43.459: V/PlayerDriver(95): HandleInformationalEvent: UNKNOWN PVMFStatus
12-26 14:04:43.459: V/PlayerDriver(95): HandleInformationalEvent: type=44 UNHANDLED
12-26 14:04:43.459: W/MediaPlayer(2705): info/warning (1, 44)
12-26 14:04:43.459: V/PlayerDriver(95): CommandCompleted
12-26 14:04:43.459: V/PlayerDriver(95): Completed command PLAYER_PREPARE status=PVMFSuccess
12-26 14:04:43.459: V/PlayerDriver(95): PLAYER_PREPARE complete mDownloadContextData=0x0, mDataReadyReceived=0
12-26 14:04:43.459: V/PVPlayer(95): stop
12-26 14:04:43.459: V/PlayerDriver(95): Send player code: 9
12-26 14:04:43.459: V/PVPlayer(95): check_for_live_streaming s=0, cancelled=0
12-26 14:04:43.459: E/QCvdec(95): Omx Flush issued when vdec is not initialized yet.
12-26 14:04:43.459: E/QCvdec(95): OMXCORE-SM:Recieved command DISABLE (2)
12-26 14:04:43.459: E/QCvdec(95): Omx Flush issued when vdec is not initialized yet.
12-26 14:04:43.459: E/QCvdec(95): OMXCORE-SM:Recieved command ENABLE (3)
12-26 14:04:43.459: E/(95): vdec: failed to allocate pmem arena (10161152 bytes)
12-26 14:04:43.459: E/QCvdec(95): ERROR!!! vdec_open failed
12-26 14:04:43.459: E/VideoMIO(95): AndroidSurfaceOutput::setParametersSync()  VIDEO ROTATION 0
12-26 14:04:43.469: E/PVOMXVidDecNode(95): Ln 1458 OMX_EventError nData1 0x0 nData2 0x0
12-26 14:04:43.469: V/PlayerDriver(95): HandleInformationalEvent: PVMFInfoErrorHandlingStart
12-26 14:04:43.469: V/PlayerDriver(95): HandleInformationalEvent: type=26 UNHANDLED
12-26 14:04:43.469: W/MediaPlayer(2705): info/warning (1, 26)
12-26 14:04:43.469: E/PlayerDriver(95): HandleErrorEvent: PVMFErrProcessing
12-26 14:04:43.469: E/MediaPlayer(2705): error (1, -18)
12-26 14:04:43.479: E/QCvdec(95): Omx Flush issued when vdec is not initialized yet.
12-26 14:04:43.479: W/QCvdec(95): ======================================================================
12-26 14:04:43.479: W/QCvdec(95):                    Open Max Statistics                                
12-26 14:04:43.479: W/QCvdec(95): ======================================================================
12-26 14:04:43.479: W/QCvdec(95): empty this buffer rate = 2985.074707
12-26 14:04:43.479: W/QCvdec(95): empty this buffer total time = 670
12-26 14:04:43.479: W/QCvdec(95): empty this buffer count = 2

==========================================================================

Есть ли способ установить больше кодеков на устройство для проигрывателя по умолчанию?

Любая помощь будет принята с благодарностью.Спасибо

1 Ответ

2 голосов
/ 26 декабря 2011

У нас была похожая проблема со старым устройством Android 2.2.Оказалось, что VideoView по какой-то причине не смог масштабировать видео до нужного размера.Мы уменьшили разрешение видео, чтобы оно соответствовало разрешению устройства, и это сработало.

Samsung Galaxy Gio имеет только дисплей 320x480, а у вас есть видео 800x480.Возможно, вы можете уменьшить разрешение видео, чтобы оно вписывалось в дисплей 320x480 без изменения размера (просто для проверки, в этом ли проблема).

Кодировали ли вы видео с базовым профилем?Это требуется для некоторых устройств для правильного воспроизведения видео.Подробнее см. Мультимедийные форматы Android .

Вы также можете попробовать добавить OnErrorListener в медиаплеер.Может быть, вы получите полезное сообщение об ошибке:)

...