2012-12-06 19 views
11

नीचे दिए गए दोनों काम एमुलेटर (2.3.3) पर ठीक काम करते हैं, लेकिन वास्तविक डिवाइस पर (Nexus S 4.1.2 के साथ) कोई छवि थंबनेल के लिए नहीं दिखायी जाती है। मैं इसे Android 4 Emulator पर चलाने की भी कोशिश करूंगा। यदि मैंने ImageView के लिए डिफ़ॉल्ट android:src सेट किया है, तो यह अब और नहीं दिखाया गया है। इससे मुझे लगता है कि इसे प्रतिस्थापित किया गया है, लेकिन ImageView खाली है।एंड्रॉइड 4 और उससे ऊपर के यूआरएल से एक वीडियो थंबनेल प्रदर्शित करना संभव है?

public class MainActivity extends Activity { 

    ImageView img; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     img = (ImageView)findViewById(R.id.img_thumbnail); 
     new MyAsync().execute("http://commonsware.com/misc/test.mp4"); 
    } 

    //This version is still not working, but it's more readable (edited: Selvin). 
    public class MyAsync extends AsyncTask<String, Void, Bitmap>{ 

     @Override 
     protected Bitmap doInBackground(String... objectURL) { 
      //return ThumbnailUtils.createVideoThumbnail(objectURL[0], Thumbnails.MINI_KIND); 
      return ThumbnailUtils.extractThumbnail(ThumbnailUtils.createVideoThumbnail(objectURL[0], Thumbnails.MINI_KIND), 100, 100); 
     } 

     @Override 
     protected void onPostExecute(Bitmap result){ 
      img.setImageBitmap(result); 
     } 
    } 
} 

मुझे पता है कि एक ऐसी ही सवाल से पहले कहा गया है, Displaying video thumbnails in an Android device from a remote video URL, लेकिन मैं पहले से ही इस और एक ही परिणाम की कोशिश की है।

यह डिवाइस पर क्यों काम नहीं करता है और यह कैसे काम करता है?

+2

परिभाषित काम नहीं कर रहा ... किसी भी logcat लॉग? – Selvin

+0

@ सेल्विन नो..नो लॉगकैट – AlexAndro

+0

तो बीएम थंबनेल निकालने के बाद शून्य है? AsyncTask में निकालने का प्रयास करें ... – Selvin

उत्तर

2

उपयोग FFmpegMediaMetadataRetriever इच्छित स्थान पर एक थंबनेल निकालने के लिए: स्थापना अनुमति झंडे समस्या हल FFmpegMediaMetadataRetriever

+1

मैंने आपकी लाइब्रेरी की कोशिश की है और यह काम करता है। विवरण से नमूना कोड का उपयोग करते हुए, 'बिटमैप बी = mmr.getFrameAtTime (2000000, FFmpegMediaMetadataRetriever.OPTION_CLOSEST);' काम करता है! 'बाइट [] आर्टवर्क = mmr.getEmbedded चित्र(); वैसे भी' शून्य 'वापस आता है। – AlexAndro

+0

बहुत लगी मैं अभी भी एक स्थानीय फ़ाइल के थंबनेल प्राप्त करने के लिए एक संभावित विधि की तलाश कर रहा हूं, फ़ाइल पथ या यूरी – Lion789

+0

इस पुस्तकालय का आकार लगभग 25 एमबी है! –

0

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

+0

असल में मेरे वीडियो अमेज़ॅन पर रहते हैं। वे एक तरह का एपीआई प्रदान करते हैं। ऊपर वर्णित विधि के साथ मैं एक रिकर्सिव थ्रेड का उपयोग करके लगभग 2 घंटे में एंड्रॉइड 2.3 एमुलेटर पर 500 से अधिक थंबनेल उत्पन्न करने में सफल रहा हूं। यह वीडियो 32 जीबी से अधिक है इसलिए ... मुझे नहीं पता कि एमुलेटर दृश्य के पीछे वास्तव में कैसे काम करता है लेकिन मुझे लगता है कि अगर मैं इसे डाउनलोड करता हूं तो मैं इस तरह की स्मृति अधिभोग अंतरिक्ष का निरीक्षण करूंगा। शायद यह कुछ अस्थायी था, मुझे नहीं पता कि क्या कहना है, लेकिन यह निश्चित रूप से 2.3 पर काम करता है और यह एंड्रॉइड 4+ पर काम नहीं करता है। – AlexAndro

+0

यहां मेरे काम का एक छोटा सा टुकड़ा है, जहां मैंने वीडियो एक्सेस करने के लिए अमेज़ॅन एपीआई का उपयोग किया है: http: // stackoverflow।कॉम/प्रश्न/13287233/कैसे-टू-प्ले-ए-वीडियो-से-अमेज़ोन-एस 3-इन-एंड्रॉइड-ऐप – AlexAndro

+0

@AlexAndro अच्छी तरह से एकमात्र चीज जो मैं वीडियो से अंगूठे उत्पन्न करने के लिए प्रलेखन में ढूंढने में सक्षम हूं MediaStore.Video.Thatchails और यह केवल आंतरिक और बाहरी भंडारण के लिए काम करता है। यदि आपका पूर्व समाधान आपकी आवश्यकताओं को पूरा करता है तो मैं कहूंगा कि इसका उपयोग करने में संकोच न करें: एक समय में वीडियो 1 डाउनलोड करें और अंगूठे उत्पन्न करें और फिर वीडियो को फिर से हटाएं: एस <- वास्तव में मुझे बेवकूफ लगता है। – Warpzit

0

कैश फ़ोल्डर में स्थित फ़ाइल से थंबनेल बनाने की कोशिश करते समय 2.3 पर एक ही समस्या का सामना करना पड़ा।

videoFile.setReadable(true, false); 
+3

2.3 कार्यों पर, ऑनलाइन वीडियो के लिए समस्या 4+ पर है। – AlexAndro