2012-07-17 20 views
11

Tôi muốn phát trực tiếp và phát các url xem trước iTunes như http://a2.mzstatic.com/us/r1000/044/Music/e9/40/ec/mzm.evyxvimp.aac.p.m4a. Tôi đã cố gắng sử dụng Thư viện AAC Decoder Android. Theo đó Tôi có thể phát trực tuyến và phát các url luồng AAC như http://http.yourmuze.com:8000/play/paradise/l.aac. Nhưng nó dnt stream m4a url (Logcat nói java.io.FileNotFoundException: http://a2.mzstatic.com/us/r1000/044/Music/e9/40/ec/mzm.evyxvimp.aac.p.m4a).Phát trực tuyến và phát luồng .m4a (Url xem trước iTunes) trong android

Làm cách nào để truyền trực tuyến liên kết .m4a?

Mã của tôi:

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; 
     } 
    } 

cập nhật

  1. tôi cố gắng sử dụng ServeStream nó nói url không thể mở được.
  2. Tôi cố gắng sử dụng Vitamio SDK nó cũng không phát được itunes preview Urls.

Bạn có thể chơi itunes preview urls trong Android?

+0

'MultiPlayer' là gì? Bạn đã thử truyền URL đến phiên bản 'MediaPlayer' mặc định của Android chưa? – Devunwired

+0

Tôi đã thử nhưng trình phát phương tiện mặc định của Android không thể truyền luồng url aac. Vì vậy, tôi đã thử sử dụng thư viện giải mã AAC sử dụng MultiPlayer thay cho MediaPlayer. Nhưng nó cũng không phải là Streaming. –

+0

Tôi là nhà phát triển của ServeStream. Tôi đã thử URL bạn đã cung cấp và nó đã phát mà không gặp sự cố khi sử dụng phiên bản mới nhất (0.4.11), FYI. ServeStream sẽ đáp ứng yêu cầu của bạn. –

Trả lời

0

Nó không có gì để làm với các định dạng phương tiện truyền thông, vvApple chỉ đơn giản ngăn các khách hàng không phải của Apple truy cập các bản xem trước. Bạn có thể giả mạo tiêu đề Tác nhân người dùng và quyền truy cập vào bản xem trước.

Đọc bài đăng blog có liên quan của tôi tại đây: http://ahmetalpbalkan.com/blog/how-to-bypass-itunes-music-previews-protection/ Đó là lý do bạn nhận được 404 khi phát nhạc trên Android. điêu nay co thể trả lơi câu hỏi của bạn.

+0

tôi cũng nghĩ như vậy ... có bất kỳ hạn chế khu vực nào không? xem bình luận của William Seemann ... Nhưng bằng cách sử dụng ServeStream nó không bao giờ làm việc cho tôi .. Tôi đã thử nghiệm nó từ các thiết bị khác nhau và giả lập từ Ấn Độ. –

5

Hãy xem ServeStream:

HTTP của trình duyệt media server và máy nghe nhạc dòng dành cho Android.

Các tính năng:

  • Hỗ trợ Android 2.2 +, 3.0 trở lên (Không hỗ trợ < 2,2)
  • Plays Android hỗ trợ các tập tin media
  • hỗ trợ bổ sung cho m3u, M3U8, pls và danh sách nhạc asx
  • Hỗ trợ đa nhiệm/phát âm thanh trong nền
  • Lặp lại và chế độ trộn ngẫu nhiên
  • Alarm hỗ trợ đồng hồ
  • Màn hình Widget
  • Sử dụng phân tích cú pháp HTML để cho phép điều hướng của máy chủ phương tiện truyền thông HTTP phục vụ các trang HTML
+0

cảm ơn bạn đã phản hồi, tôi đã thử ứng dụng. Nó cũng cho thấy url không thể mở được ... –

+1

Tôi là nhà phát triển của ServeStream. Tôi đã thử URL bạn đã cung cấp và nó đã phát mà không gặp sự cố khi sử dụng phiên bản mới nhất (0.4.11), FYI. ServeStream sẽ đáp ứng yêu cầu của bạn. –

3

M4A và AAC được hỗ trợ bởi Android. Tôi muốn giới thiệu để đọc trang này: http://developer.android.com/guide/appendix/media-formats.html

Chỉ cần vài điều mà bạn cần phải nhận thức a) Các thiết bị cũ có thể không hỗ trợ định dạng mã hóa hoặc cụ thể (đặc biệt là, nếu bạn đi dưới OS 2.2) b) Một số các thiết bị giá rẻ có thể có những thứ khá lạ được tích hợp trong ngăn xếp âm thanh/video. Tôi đã thấy nó trên vài thiết bị Trung Quốc giá rẻ.

Vì vậy, bạn có thể thử sử dụng MediaPlayer API để chơi nó: http://developer.android.com/reference/android/media/MediaPlayer.html

Bạn có thể xem ví dụ ở đây: http://blog.endpoint.com/2011/03/api-gaps-android-mediaplayer-example.html

+0

Tôi cũng đã thử điều này. Nhưng không phát trực tuyến. Tôi nhận được một java.io.FileNotFoundException. –

+0

Bạn có cấp quyền truy cập Internet không? Tôi nghĩ rằng vấn đề là nó không thể truy cập nó (so với nó không thể chơi nó) –

+0

tôi cũng đã thêm quyền .. –

Các vấn đề liên quan