Stream and Play.m4a stream (Itunes preview Url) в android
Я хочу транслировать и воспроизводить URL-адреса предварительного просмотра itunes, такие как http://a2.mzstatic.com/us/r1000/044/Music/e9/40/ec/mzm.evyxvimp.aac.p.m4a. Я попытался использовать AAC Decoder Android. По какому я могу поток и воспроизводить поток AAC, например http://http.yourmuze.com:8000/play/paradise/l.aac. Но это dnt stream m4a urls (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;
}
}
Обновление
- Я пытаюсь использовать ServeStream, в котором говорится, что URL-адрес не может быть открыт.
- Я пытаюсь использовать Vitamio SDK, также не удается воспроизвести
itunes preview Urls
.
Можно проигрывать itunes preview Urls
в андроиде?
Ответы
Ответ 1
Это не имеет никакого отношения к медиаформатам и т.д. Apple просто запрещает клиентам, не принадлежащим Apple, получать доступ к превью. Вы можете обмануть заголовок User-Agent и получить доступ к предварительным просмотрам.
Прочтите мой соответствующий пост в блоге здесь: http://ahmetalpbalkan.com/blog/how-to-bypass-itunes-music-previews-protection/ Вот почему вы получаете 404 во время игры на Android. это должно ответить на ваш вопрос.
Ответ 2
Посмотрите ServeStream:
HTTP-серверный браузер и проигрыватель потоков для Android.
Особенности:
- Поддержка Android 2.2+, 3.0+ (поддержка не поддерживается < 2.2)
- Воспроизводит файлы мультимедиа, поддерживаемые Android.
- Дополнительная поддержка плейлистов m3u, m3u8, pls и asx.
- Поддержка многозадачности/воспроизведения аудио в фоновом режиме
- Режимы повтора и перетасовки
- Поддержка будильника
- Виджет главного экрана
- Использует синтаксический анализ HTML для навигации по HTTP-серверам, которые обслуживают HTML-страницы.
Ответ 3
M4A и AAC поддерживаются Android. Я бы рекомендовал прочитать эту страницу: http://developer.android.com/guide/appendix/media-formats.html
Только пара вещей, о которых вы должны знать
a) Старые устройства могут не иметь специальной кодировки или поддержки формата (особенно, если вы перейдете к OS 2.2)
б) Некоторые дешевые устройства могут иметь довольно странные вещи, встроенные в стек аудио/видео. Я видел это на нескольких дешевых китайских устройствах.
Итак, вы можете попробовать использовать MediaPlayer API для воспроизведения:
http://developer.android.com/reference/android/media/MediaPlayer.html
Вы можете посмотреть здесь:
http://blog.endpoint.com/2011/03/api-gaps-android-mediaplayer-example.html