web-dev-qa-db-ja.com

URLからダウンロードせずにmp3を再生するにはどうすればよいですか?

次のように開発したいのですが、良い例が見つかりませんでした:

URLにmp3エンコードをダウンロードせずにプレイしたい。ユーザーが停止しない限り、mp3はバックグラウンドで再生されます。マルチタスクをしていると思います。

サンプル文書またはアドバイスをお願いします。ありがとう。

19
realuser

これら2つのチュートリアルをご覧ください。これらでは、.mp3ファイルはWeb URLを介して再生されます。

Android MediaPlayer class を使用してURLからmp3メディアファイルをストリーミングする例

RLからMp3ファイルを再生

また、バックグラウンドで.mp3ファイルを再生する場合は、サービスとAIDLを使用する必要があると思います。

基本的なAndroid-Music Playerのデモをご覧ください MusicDroid-オーディオプレーヤーパートII オーディオプレーヤーのサービスとAIDlの使用方法を説明しています。

ありがとう。

25
user370305

これを行う簡単な方法::

MediaPlayer mp = new MediaPlayer();
 mp.setDataSource(PATH_TO_FILE);
 mp.prepare();
 mp.start();
13
Nikunj Patel

MediaPlayer.create(context、uri);を使用できます。コンテキスト(this)と、曲を再生したい場所のURIを渡します

4
Arun
_public class PlayAudioManager {
    private static MediaPlayer mediaPlayer;

public static void playAudio(final Context context, final String url) throws Exception {
    if (mediaPlayer == null) {
        mediaPlayer = MediaPlayer.create(context, Uri.parse(url));
    }
    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            killMediaPlayer();
        }
    });
    mediaPlayer.start();
}

private static void killMediaPlayer() {
    if (mediaPlayer != null) {
        try {
            mediaPlayer.reset();
            mediaPlayer.release();
            mediaPlayer = null;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
}
_

アクティビティの例では、PlayAudioManager.playAudio(context, http://dict.youdao.com/dictvoice?audio=good&type=1)を呼び出すだけです

3
veeson
if (!isPlaying)
        {
            isPlaying = true;

            mp = new MediaPlayer();

            try {

                mp.reset(); // new one

                mp.setDataSource(AudioPlayer.this, myUri);

                //mp.prepareAsync();

                mp.setAudioStreamType(AudioManager.STREAM_MUSIC);

                mp.prepare(); // don't use prepareAsync for mp3 playback

                mp.start();

                // String songTitle = songsList.get(songIndex).get("songTitle");
                   // songTitleLabel.setText(songTitle);

                songProgressBar.setProgress(0);
                songProgressBar.setMax(100);

                // Updating progress bar
                updateProgressBar();

            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
        else
        {
            isPlaying = false; 

            mp.release();// stop Playing 

            //mp = null;
        }

動作しているMediaPlayerで使用しています。ダウンロードする必要はありません。

2
Xar E Ahmer

編集:

ああ、これはAndroid特定であり、(単なる)Webサイトではありません。これらのソリューションと、他の人が言及したMediaPlayerソリューションの両方を見ることをお勧めします。 MediaPlayerを使用する場合は、回答を受け入れることをお勧めします:)


W3schoolsでこれを行う方法の多くの例があります。

http://www.w3schools.com/html/html_sounds.asp

あなたはできる:

  • Yahoo Webプレーヤー などのメディアプレーヤーを埋め込みます
  • <audio>要素を介してHTMLでオーディオを再生する
  • <embed>要素を使用します
  • <object>要素を使用します

以下は、彼らが「最良」と表現するソリューションです。

<audio controls="controls" height="50px" width="100px">
  <source src="song.mp3" type="audio/mpeg" />
  <source src="song.ogg" type="audio/ogg" />
  <embed height="50px" width="100px" src="song.mp3" />
</audio>

これはHTML 5要素であるため、すべてのブラウザーで動作するとは限らないことに注意してください。ただし、リッチマルチメディアエクスペリエンスを開発する必要があるブラウザーであれば、おそらく動作すると思います。