我想要播放和播放像http://a2.mzstatic.com/us/r1000/044/Music/e9/40/ec/mzm.evyxvimp.aac.p.m4a这样的iTunes预览网址。我尝试使用AAC Decoder Android库。 我可以流式传输和播放像http://http.yourmuze.com:8000/play/paradise/l.aac这样的AAC流网址。但它传输了m4a网址(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;
}
}
更新
itunes preview Urls
。可以在android中播放itunes preview urls
吗?
答案 0 :(得分:5)
看看ServeStream:
适用于Android的HTTP媒体服务器浏览器和流播放器。
功能强>
- 支持Android 2.2 +,3.0 +(不支持< 2.2)
- 播放Android支持的媒体文件
- 对m3u,m3u8,pls和asx播放列表的其他支持
- 支持多任务处理/在后台播放音频
- 重复和随机播放模式
- 闹钟支持
- 主屏幕小部件
- 利用HTML解析来导航提供HTML页面的HTTP媒体服务器
答案 1 :(得分:4)
Android支持M4A和AAC。我建议您阅读此页面: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
答案 2 :(得分:0)
它与媒体格式等无关.Apple只是阻止非Apple客户端访问预览。您可以欺骗User-Agent标头并访问预览。
在此处阅读我的相关博文:http://ahmetalpbalkan.com/blog/how-to-bypass-itunes-music-previews-protection/这就是为什么在Android上播放音乐时获得404的原因。这应该回答你的问题。