0

Android アプリで、MediaPlayer 関数を使用して、リモート サーバーからライブ オーディオ ストリームをストリーミングしています。しかし、オーディオは途切れ途切れで途切れ途切れです。コンピューターでフィードを再生すると完全に再生されるため、問題はインターネットではありません。何が問題なのですか?*注: ストリームはライブです。これは私が使用しているコードです:

MediaPlayer mp = new MediaPlayer();
    try{
    mp.setDataSource("http://radiotool:80/feed 342.mp3");//hardcoded for testing purposes
    mp.prepare();
    mp.start();
    }
    catch(Exception e)
    {Log.d("Error came up man",", check the internet connection and stuff..");
4

1 に答える 1

2

リンク先のストリームが、ストリームの先頭で大量のデータ バッファを送信していません。通常、これは問題ではありません。クライアントは、再生速度を決定し、データ転送速度を監視し、それに応じてクライアント側のバッファを管理する責任があるためです。そのため、大きなバッファーを使用するリンクを試してみると、これは問題なく再生できました。

基本的に、オーディオのドロップアウトは一定のバッファ アンダーランが原因です。これを修正するには、バッファ サイズを増やす必要があります。これは今のところ不可能のようですが、別の方法として、HTTP クライアントを自分で管理し、データを MediaPlayer にプロキシすることが考えられます。そのリンクはかなり古いものです...それ以来、誰かがこれを別の方法で行う方法を考え出したことを願っています. 私は Android 開発者ではないので、はっきりとは言えません。

私が最初に行うことはmp.prepareAsync()、 を呼び出し、MediaPlayer が開始の準備が整ったことを通知してから 2 秒待つことです。実際に を呼び出すまで、データはバックグラウンドでバッファリングされ続けると思います.start()

于 2013-03-16T22:54:14.633 に答える