2017-06-02 5 views
1

私はMediaPlayerでAndroidでストリームビデオアプリを開発しています。問題は、私は現在のビットレートを表示する必要がありますが、私はそれを取得する方法の任意の有効な提案を発見していないのですか?ここでMediaPlayerでストリーミングビットレートを取得する方法は?

は私がプレイする動画のURLを設定しています方法です:

mediaPlayer = new MediaPlayer(); 
    try { 
     mediaPlayer.setDataSource(VIDEO_PATH); 
     mediaPlayer.prepare(); 
     mediaPlayer.init(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

その作業を取得する唯一の方法は、私はそれが可能かもしれない読んだExoPlayerを(使用している場合、私は知りません)

何か提案がありますか?

ありがとうございます!

答えて

1

MediaPlayerではこれを行うことはできませんが、APIレベル10以降、つまりかなり前に利用できるMediaMetadataRetrieverを使用できます。

int getBitRate(String url) { 
     final MediaMetadataRetriever mmr = new MediaMetadataRetriever(); 
     try { 
      mmr.setDataSource(url, Collections.EMPTY_MAP); 
      return Integer.parseInt(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE)); 
     } catch (NumberFormatException e) { 
      return 0; 
     } finally { 
      mmr.release(); 
     } 
    } 

これは持つことができます欠点は、あなたがはURIからストリーミングしている場合は、メタデータ(のみRTTを取得するための余分なHTTPリクエストを行うということです。あなたはファイルディスクリプタから読んでいる場合には、もっと深刻なことがあります)。うまくいけば大きな問題はない。