0

私は、すでに市場に出ているビデオ再生 (インタラクティブ ムービー) を多用する Android 上のアプリケーションを開発しています。

問題は、Samsung Galaxy Gio (2.3.3) ではビデオの再生が機能しないことです。ただし、解像度が小さい古いモデルでは機能します。

デフォルトのメディア プレーヤーでビデオを手動で読み込もうとしたのですが、再生できないため、コーデックに問題があるようです。他のメディアプレーヤーでは問題ありません。

ビデオは、Handbrake with 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

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

デフォルト プレーヤー用にデバイスに追加のコーデックをインストールする方法はありますか?

どんな助けでも大歓迎です。ありがとうございました

4

1 に答える 1

2

古い Android 2.2 デバイスでも同様の問題がありました。何らかの理由で、VideoView がビデオを正しいサイズにスケーリングできなかったことが判明しました。デバイスの解像度に合わせてビデオの解像度を下げたところ、うまくいきました。

Samsung Galaxy Gio には 320x480 のディスプレイしかなく、800x480 のビデオがあります。ビデオの解像度を下げて、サイズを変更せずに 320x480 ディスプレイに収まるようにすることもできます (それが問題かどうかをテストするためだけに)。

ビデオをベースライン プロファイルでエンコードしましたか? これは、一部のデバイスでビデオを正しく再生するために必要です。詳細については、 Android メディア形式を参照してください。

メディア プレーヤーに OnErrorListener を追加することもできます。役に立つエラーメッセージが表示されるかもしれません:)

于 2011-12-26T14:05:56.130 に答える