11

http://a2.mzstatic.com/us/r1000/044/Music/e9/40/ec/mzm.evyxvimp.aac.p.m4aのような iTunes プレビュー URL をストリーミングして再生したい。AAC Decoder Android Libraryを使ってみました。これにより 、 http://http.yourmuze.com:8000/play/paradise/l.aacのような AAC ストリーム URL をストリーミングおよび再生できます。しかし、それはm4aのURLをストリーミングしません(Logcatは言います)。java.io.FileNotFoundException: http://a2.mzstatic.com/us/r1000/044/Music/e9/40/ec/mzm.evyxvimp.aac.p.m4a

.m4a リンクをストリーミングするにはどうすればよいですか?

私のコード:

public class AACPlayerActivity extends Activity implements OnClickListener,PlayerCallback{

private Button btnPlay;
private ProgressBar progress;
private Handler uiHandler;

private MultiPlayer multiPlayer;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    btnPlay = (Button)findViewById(R.id.playButton);
    progress = (ProgressBar)findViewById(R.id.progress);
    progress.setVisibility(View.INVISIBLE);

    btnPlay.setOnClickListener(this);

    uiHandler = new Handler();
}

public void playerException(Throwable arg0) {
    // TODO Auto-generated method stub

}

public void playerMetadata(String arg0, String arg1) {
    // TODO Auto-generated method stub

}

public void playerPCMFeedBuffer(boolean arg0, final int audioBufferSizeMs, final int audioBufferCapacityMs) {
    // TODO Auto-generated method stub
    uiHandler.post(new Runnable() {

        public void run() {
            // TODO Auto-generated method stub
             progress.setProgress( audioBufferSizeMs * progress.getMax() / audioBufferCapacityMs );
        }
    });
}

public void playerStarted() {

    uiHandler.post(new Runnable() {

        public void run() {
            // TODO Auto-generated method stub
            progress.setProgress( 0 );
            progress.setVisibility( View.VISIBLE );
        }
    });

}

public void playerStopped(int arg0) {
    // TODO Auto-generated method stub
    uiHandler.post(new Runnable() {

        public void run() {
            // TODO Auto-generated method stub
            progress.setVisibility( View.INVISIBLE );
        }
    });

}

public void onClick(View v) {
    // TODO Auto-generated method stub
    if(btnPlay.getText().equals("Play")){
        start();
        btnPlay.setText("stop");
    }else{
        stop();
    }
}


 private void start() {
        stop();
        // we cannot do it in playerStarted() - it is too late:
        multiPlayer = new MultiPlayer(this,MultiPlayer.DEFAULT_AUDIO_BUFFER_CAPACITY_MS, MultiPlayer.DEFAULT_DECODE_BUFFER_CAPACITY_MS);
        multiPlayer.playAsync("http://a2.mzstatic.com/us/r1000/044/Music/e9/40/ec/mzm.evyxvimp.aac.p.m4a");
    }


    private void stop() {
        if (multiPlayer != null) {
            multiPlayer.stop();
            multiPlayer = null;
        }
    }

アップデート

  1. ServeStreamを使用しようとすると、URL を開けませんでした。
  2. Vitamio SDKを使用しようとしましたが、itunes preview Urls.

itunes preview urlsアンドロイドでのプレイは可能ですか?

4

3 に答える 3

5

ServeStreamを見てください:

Android 用の HTTP メディア サーバー ブラウザーおよびストリーム プレーヤー。

特徴:

  • Android 2.2 以降、3.0 以降をサポート (2.2 未満はサポートなし)
  • Android 対応のメディア ファイルを再生します
  • m3u、m3u8、pls、および asx プレイリストの追加サポート
  • バックグラウンドでのマルチタスク/オーディオ再生をサポート
  • リピートモードとシャッフルモード
  • 目覚まし時計のサポート
  • ホーム画面ウィジェット
  • HTML 解析を利用して、HTML ページを提供する HTTP メディア サーバーのナビゲーションを可能にします。
于 2012-07-21T03:47:25.917 に答える
4

M4A と AAC は Android でサポートされています。このページを読むことをお勧めします: http://developer.android.com/guide/appendix/media-formats.html

a) 古いデバイスには、特定のコード化やフォーマットのサポートがない場合があります (特に、OS 2.2 より下の場合) b) 一部の安価なデバイスには、オーディオ/ビデオ スタックに非常に奇妙なものが統合されている場合があります。いくつかの安価な中国のデバイスで見ました。

したがって、MediaPlayer API を使用して再生することができます: http://developer.android.com/reference/android/media/MediaPlayer.html

ここで例を見ることができます: http://blog.endpoint.com/2011/03/api-gaps-android-mediaplayer-example.html

于 2012-08-28T15:48:40.807 に答える
0

メディア形式などとは関係ありません。Apple は、Apple 以外のクライアントがプレビューにアクセスできないようにするだけです。User-Agent ヘッダーを偽装し、プレビューにアクセスできます。

私の関連するブログ投稿をここで読んでください: http://ahmetalpbalkan.com/blog/how-to-bypass-itunes-music-previews-protection/ Android で音楽を再生しているときに 404 が発生するのはそのためです。これはあなたの質問に答えるはずです。

于 2012-09-25T14:28:22.097 に答える