3

Android OS > 4.0 (OS を含む) 用の Android アプリケーションを開発しています。次のようなサンプル m3u8 ファイルがあります。

#EXTM3U
#EXT-X-TARGETDURATION:56
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:28, no desc
ulr/audio/file.mp3
#EXTINF:28, no desc
ulr/audio/file.mp3
#EXT-X-ENDLIST

次のコードを使用して、そのファイルを再生しようとしています

        mMediaPlayer = new MediaPlayer();
        mMediaPlayer.setOnErrorListener(this);
        mMediaPlayer.setOnPreparedListener(this);
        mMediaPlayer.setOnCompletionListener(this);
        mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
        try
        {
            mMediaPlayer.setDataSource(uri);
        } catch (IllegalArgumentException e)
        {
            e.printStackTrace();
        } catch (SecurityException e)
        {
            e.printStackTrace();
        } catch (IllegalStateException e)
        {
            e.printStackTrace();
        } catch (IOException e)
        {
            e.printStackTrace();
        }
        mMediaPlayer.prepareAsync();

私のonPrepared()方法は次のとおりです。

public void onPrepared(MediaPlayer player)
    {
        player.start();
    }

しかし、コードは最初に に来て、すぐににonPrepared()行きます。onError()what=1extra=-1010

この質問が何度も尋ねられていることは知っています (たとえば、ここここここ) 。 Vitamioについても知っていますが、実装の何が問題なのかを知りたいです。作成した m3u8 ファイルに何か問題がありますか? 私はそのドキュメントを調べましたが、すべてが正しいようです。

誰かがこの問題に光を当てることができれば、本当にうれしいです.

-前もって感謝します

4

1 に答える 1

0

エラー コード -1010 はMEDIA_ERROR_UNSUPPORTEDと一致します。これは、プレイリスト内の MP3 ファイルをデコードするために必要なハードウェアまたはソフトウェア コーデックがデバイスにないことを意味します。

Vitamio は、メディアのソフトウェア デコードを追加するため、この状況で機能します。これは、ハードウェアのデコードよりも遅く、より多くのバッテリーを消費します。また、アプリのサイズが大幅に増加する可能性もあります。

ただし、MP3 は非常に長い間 Android でのデコード用にサポートされているメディア形式であるため、これは奇妙に思えます。

于 2014-09-09T21:06:54.390 に答える