7

Android 4.0+ のアプリでストリームが再生されるたびに、ストリームがロードされる前にOnPreparefrom メソッドMediaPlayer.OnPreparedListenerが呼び出されるため、ストリームのダウンロード/バッファリングが進行中であることをユーザーに示すことができないという問題に直面しています。私はすでに同じ種類の質問を見つけましたが、答えられていません。これが 私がやっていることです。

   @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);  
        playVideo(someRtspUrl);
    }
    private void playVideo(String url) {
        // if app is running on Google TV then change RTSP link to HLS
        if (url.contains("rtsp")) {

            // split the RTSP URL and make it as HLS
            String videoUrlParts[] = url.split("\\?");
            url = videoUrlParts[0].replace("rtsp", "http") + "/playlist.m3u8";

            if (videoUrlParts.length > 1)
                url += "?" + videoUrlParts[1];
        }   mVideoView.setVideoURI(Uri.parse(url));
        mVideoView.requestFocus();
        mVideoView.setOnCompletionListener(this);
        mVideoView.setOnPreparedListener(this); 

    }



    @Override
        public void onPrepared(MediaPlayer player) {
            dismissProgressDialog();
            mVideoView.start();
        }

このコードは、Google TV およびその他の Android 3.0 以降および 4.0 以降のデバイスで正常に機能しています

4

3 に答える 3

1

これは、Android 4.3 未満の .m3u8 の既知の問題です。

これは 4.3 で修正されました。4.3 & < 4.3 など、異なるプラットフォームの MediaPlayer または VideoView コードを比較する価値があります。

于 2013-08-02T20:00:41.613 に答える
1

私はメディアプレーヤーの経験があまりありません。しかし、私の側からのいくつかの提案/質問

  1. 準備の電話はありません。あなたがそれをしているなら、 prepareAsync を試しましたか?
  2. onPrepared コールバックに渡される mediaplayer インスタンスを使用していません。間違ったメディアプレーヤーを起動しようとしている可能性があります。
于 2013-07-31T13:30:46.543 に答える