2011-01-19 9 views
5

रिलीज नोट्स के अनुसार, स्टेजफ़ाइट ने जिंजरब्रेड रिलीज में ओपनकोर फ्रेमवर्क को बदल दिया। ऐसा लगता है कि कई चर्चाएं हुई हैं जो कहती हैं: एंड्रॉइड 2.3 के बाद से ऐप्पल की HTTP लाइव स्ट्रीमिंग डिफ़ॉल्ट रूप से समर्थित है। यहां तक ​​कि Wikipedia इसका उल्लेख भी करता है।
हालांकि , जब मैं test stream एप्पल का उपयोग कर द्वारा प्रदान चलाने का प्रयास MediaPlayerDemo_Video.java एपीआई प्रदर्शन के साथ बंडल मैं निम्नलिखित अपवादों मिलती है:जिंजरब्रेड और ऐप्पल के HTTP लाइव स्ट्रीमिंग समर्थन पर मीडियाप्लेयर फ्रेमवर्क

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 

--- प्रासंगिक कोड (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); 

प्रश्न:
1. क्या जिंजरब्रेड बिल्ड वास्तव में ऐप्पल के HTTP लाइव स्ट्रीमिंग प्रोटोकॉल का समर्थन करता है?
2. ऊपर क्या गलत हुआ?

कृपया मदद करें।

+0

मैंने विकी पेज पर एक {{उद्धरण वांछित}} जोड़ा था और ऐसा लगता है कि लेखक ने अनुभाग को बदलकर जवाब दिया है। – Samuh

+0

हनीकॉम के लिए पूर्वावलोकन एसडीके डाउनलोड के लिए उपलब्ध है और एम 3 यू 8 का समर्थन करने के लिए विज्ञापित है। हालांकि, मैं इस पर ऐप्पल की टेस्ट स्ट्रीम खेलने में सक्षम नहीं था। – Samuh

+0

मैंने इसके लिए एक बग दायर किया है: http://code.google.com/p/android/issues/detail?id=14646&q=stars%3D2&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars – Samuh

उत्तर

8

ठीक है, मुझे कुछ डेटा मिला है और मैं अपने धागे का जवाब देकर इस धागे को अपडेट करने जा रहा हूं। अगर किसी को तालिका में लाने के लिए सुझाव या अन्य विचार हैं तो कृपया जोड़ें।

  1. Stagefright रूपरेखा है कि Honeycomb निर्माण के साथ आता है HTTP Live Streaming का समर्थन करता है। प्रलेखन मसौदा विनिर्देश के अधिकांश हिस्सों को स्पष्ट रूप से कौन सा हिस्सों का उल्लेख किए बिना पढ़ता है।

  2. वीडियो और ऑडियो media formats supported by Android के अनुरूप होना चाहिए।

  3. मैं AES-128 एन्क्रिप्शन को नियोजित सामग्री-संरक्षित धाराओं को चलाने में सक्षम था। हालांकि, एम्यूलेटर का प्रदर्शन (दुर्भाग्य से, मेरे पास डिवाइस नहीं था) अच्छा नहीं था। ऑडियो और वीडियो बहुत सिंक से बाहर थे। स्ट्रीमिंग अनुप्रयोगों को वास्तविक उपकरणों पर परीक्षण किया जाना है।

  4. आप https पर अपने डेटा स्ट्रीम नहीं कर सकते हैं। इसके अलावा, करने के क्रम में का पता लगाने कि धारा HTTPLive मानक के अनुरूप है आप "httplive://"

+0

हैलो, मैंने वही काम किया है जो आपने कहा था। मैंने परीक्षण किया है ("प्रेजम्प्लीव" के साथ यूआरएल) 2.2,2.3 और 4.0 ("http" के साथ यूआरएल) यह ठीक काम करता है लेकिन यह केवल एक्सपीरिया नियो वी में काम नहीं कर रहा है जिसमें ओएस 2.3.4 है। क्या आप बता सकते हैं कि इस मुद्दे का क्या कारण है? – Hasmukh

0

जिंजरब्रेड समर्थन कुछ एचएलएस धाराओं httplive का उपयोग कर खेल रहा है के साथ यूआरएल के "http://" हिस्सा प्रतिस्थापित करना होगा: // योजना उपसर्ग लेकिन समर्थित कोडेक्स बहुत सीमित हैं और मीडिया फ्रेमवर्क को क्रैश करते हुए पूरी तरह से वैध स्ट्रीम बनाना बहुत आसान है और खेलने में विफल रहता है।

मेरे अनुभवों से पता चला है कि यह क्रैश सामान्य रूप से एन्क्रिप्टेड सामग्री के लिए पहले सेगमेंट को लोड या डीकोड करते समय होता है, लेकिन कुंजी से यह अनुरोध नहीं किया जाता है कि फ्रेमवर्क कुंजी लाइनों को अनदेखा कर रहा है।

बेशक, उन लोगों के लिए जिन्हें केवल बाजार पर सबसे नए उपकरणों का समर्थन करने की आवश्यकता है, आईसीएस में एचएलएस के लिए समर्थन उचित दिखाई देता है (हालांकि अभी भी अपूर्ण) हालांकि हम में से उन लोगों को जिन्हें पिछली संगतता की आवश्यकता है, निश्चित रूप से बाहर निकल गए हैं सर्दी में, और ऐसा लगता है कि स्ट्रीमिंग के लिए एकमात्र विकल्प (प्रगतिशील डाउनलोड के विपरीत) आरटीएसपी है, जो एंड्रॉइड में खराब रूप से लगाया गया है।

संबंधित मुद्दे