2011-01-19 29 views
5

Theo ghi chú phát hành, StageFright thay thế khung công tác OpenCore trong bản phát hành GingerBread. Dường như đã có nhiều cuộc thảo luận cho biết: Phát trực tuyến HTTP của Apple được hỗ trợ theo mặc định kể từ Android 2.3. Ngay cả các Wikipedia đề cập đến điều này.
Tuy nhiên, khi tôi cố gắng chạy test stream cung cấp bởi Apple sử dụng MediaPlayerDemo_Video.java kèm với Demo API tôi nhận được ngoại lệ sau:Khung MediaPlayer trên GingerBread và Hỗ trợ phát trực tuyến HTTP của Apple

setDataSource('http://devimages.apple.com/iphone/samples/bipbop/gear1/ 
prog_index.m3u8') 
connect to devimages.apple.com:80/iphone/samples/bipbop/gear1/ 
prog_index.m3u8 @0 
INFO/NuCachedSource2(34): ERROR_END_OF_STREAM 
error (1, -2147483648) 
ERROR/MediaPlayerDemo(667): error: Prepare failed.: status=0x1 
java.io.IOException: Prepare failed.: status=0x1 
at android.media.MediaPlayer.prepare(Native Method) 
at 
com.video.stream.MediaPlayerDemo_Video.playVideo(MediaPlayerDemo_Video.java: 
125) 
at 
com.video.stream.MediaPlayerDemo_Video.surfaceCreated(MediaPlayerDemo_Video.java: 
181) 
    ... 
    surfaceChanged called 
    Displayed com.video.stream/.MediaPlayerDemo_Video: +1s652ms (total 
    +7s427ms) 
    GC_EXPLICIT freed 2K, 55% free 2514K/5511K, external 716K/1038K, 
    paused 183ms 
    GC_EXPLICIT freed 17K, 52% free 2782K/5767K, external 716K/1038K, 
    paused 87ms 
    GC_EXPLICIT freed 68K, 50% free 2972K/5895K, external 2544K/3109K, 
    paused 104ms 
    request time failed: java.net.SocketException: Address family not 
    supported by protocol 

--- mã có liên quan (MediaPlayerDemo_Video.java):

path = "http://devimages.apple.com/iphone/samples/bipbop/gear1/ 
prog_index.m3u8"; 
mMediaPlayer = new MediaPlayer(); 
mMediaPlayer.setDataSource(path); 
mMediaPlayer.setDisplay(holder); 
mMediaPlayer.prepare(); 
mMediaPlayer.setOnBufferingUpdateListener(this); 
mMediaPlayer.setOnCompletionListener(this); 
mMediaPlayer.setOnPreparedListener(this); 
mMediaPlayer.setOnVideoSizeChangedListener(this); 
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 

Câu hỏi:
1. GingerBread có thực sự hỗ trợ giao thức HTTP Live Streaming của Apple không?
2. Điều gì đã xảy ra ở trên?

Vui lòng trợ giúp.

+0

Tôi đã thêm {{citation needed}} trên trang Wiki và có vẻ như tác giả đã phản hồi bằng cách thay đổi phần. – Samuh

+0

SDK xem trước cho Honeycomb có sẵn để tải xuống và được quảng cáo để hỗ trợ m3U8. tuy nhiên, tôi không thể chơi thử nghiệm của Apple trên đó. – Samuh

+0

Tôi đã gửi lỗi cho vấn đề này: http://code.google.com/p/android/issues/detail?id=14646&q=stars%3D2&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars – Samuh

Trả lời

8

Được rồi, tôi đã tìm thấy một số dữ liệu và tôi sẽ cập nhật chủ đề này bằng cách trả lời câu hỏi của riêng tôi. Nếu ai đó có đề xuất hoặc cân nhắc khác để đưa vào bảng, vui lòng thêm.

  1. Stagefright khuôn khổ mà đi kèm với Honeycomb xây dựng hỗ trợ HTTP Live Streaming. Tài liệu đọc hầu hết các phần của đặc tả dự thảo mà không đề cập rõ ràng các phần nào.

  2. Video và âm thanh phải phù hợp với media formats supported by Android.

  3. Tôi có thể phát các luồng được bảo vệ bằng nội dung sử dụng mã hóa AES-128. Mặc dù, hiệu suất của trình mô phỏng (không may, tôi không có thiết bị) là không tốt. Âm thanh và video đã hết sức không đồng bộ. Ứng dụng truyền trực tuyến Phải được thử nghiệm trên các thiết bị thực.

  4. Bạn không thể truyền dữ liệu của mình qua https. Ngoài ra, để phát hiện rằng các dòng phù hợp với tiêu chuẩn HTTPLive bạn sẽ phải thay thế "http://" một phần của URL với "httplive://"

+0

Xin chào, tôi đã làm điều tương tự mà bạn đã nói. tôi đã thử nghiệm trong (URL với "httplive") 2.2.2.3 và 4.0 (URL với "http") nó hoạt động tốt nhưng nó không hoạt động chỉ trong Xperia Neo v có hệ điều hành 2.3.4. bạn có thể cho biết lý do của vấn đề này không? – Hasmukh

0

Gingerbread không hỗ trợ chơi một số suối HLS sử dụng httplive: // chương trình tiền tố nhưng các codec được hỗ trợ rất hạn chế và rất dễ dàng để xây dựng một luồng hoàn toàn hợp lệ làm hỏng khung phương tiện và không phát được. Kinh nghiệm của tôi đã chỉ ra rằng sự cố này thường xảy ra trong khi tải hoặc giải mã đoạn đầu tiên, ngay cả đối với nội dung được mã hóa, nhưng khóa đó không được yêu cầu gợi ý rằng khung này bỏ qua các dòng KEY. Tất nhiên, đối với những người chỉ cần hỗ trợ các thiết bị mới nhất trên thị trường, sự hỗ trợ cho HLS trong ICS có vẻ hợp lý (mặc dù vẫn không hoàn hảo) tuy nhiên những người trong số chúng ta cần một số loại tương thích ngược lại bị loại bỏ một cách quyết định trong cái lạnh, và có vẻ như tùy chọn duy nhất để phát trực tuyến (trái ngược với tải xuống lũy ​​tiến) là RTSP, bản thân nó không được nhúng vào trong Android.

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