5

Google फ़ोटो ऐप के साथ, मैं एक वीडियो चुनने की कोशिश कर रहा हूं, जो डिवाइस पर कैश नहीं किया गया है।Google फ़ोटो ऐप से वीडियो (गैर-स्थानीय) प्राप्त करना

मैं विकल्प संवाद लॉन्च करने के लिए ACTION_GET_CONTENT मंशा का उपयोग कर रहा हूं, और वहां से मैं Google फ़ोटो ऐप चुनता हूं।

स्थानीय वीडियो चुनते समय, यह इस रूप में उरी लौटाता है।

सामग्री: // मीडिया/बाहरी/वीडियो/मीडिया/6708

और उस से, मैं वास्तविक फ़ाइल स्थान प्राप्त है, और वहाँ से आगे बढ़ने के लिए सामग्री प्रदाता क्वेरी। फ़ाइल स्थान इस तरह दिखता है। पर एक वीडियो उपलब्ध नहीं:

/भंडारण// 0/WhatsApp/मीडिया/WhatsApp वीडियो/VID-20,131,102-WA0000.mp4

अब, जब मैं एक ऑनलाइन वीडियो चुनते हैं, यानी नकल करते मेरे डिवाइस अभी तक है, और जो इस्तेमाल किया जा करने के लिए डाउनलोड करने की आवश्यकता है, वापस आ उरी इस तरह दिखता है:

सामग्री: //com.google.android.apps.photos.content/1/ https://lh6.googleusercontent.com/_RD-QTO_SK5jlaPldTe2n5GANqMc3h-ukcbNoFlF1NLy=s0-d

अब, इसके साथ, कोई दस्तावेज ContentProvider नहीं है जो मुझे इस वीडियो के वास्तविक लिंक प्राप्त करने में मदद करेगा। यहां तक ​​कि यदि मैं कोई प्रश्न करता हूं, तो यह DISPLAY_NAME और SIZE कॉलम से अलग कुछ भी नहीं देता है।

DISPLAY_NAME video.mpeg (अलग वीडियो के लिए एक ही प्रदर्शन नाम)

आकार शायद मुझे वास्तविक फ़ाइल का आकार बताता है शामिल हैं।

Referred to this post on SO.

मैं विभिन्न पदों जाँच की, और सोचा कि मैं, सामग्री प्रदाता के माध्यम से वीडियो के लिए एक InputStream प्राप्त करने के लिए फ़ाइल सहेजें, और फ़ाइल के साथ काम करेगा। एक छवि फ़ाइल चुनना ठीक काम करता है, लेकिन वीडियो के साथ यह नहीं करता है।

तो, स्ट्रीम को एक फ़ाइल में कॉपी करने के लिए, मेरे पास यह कोड है।

 
InputStream inputStream = context.getContentResolver().openInputStream(Uri.parse(path)); 

और अंत में एक अस्थायी फ़ाइल को लिखें। फ़ाइल बनाई गई है, लेकिन ऐसा लगता है कि यह सही ढंग से स्वरूपित नहीं है। वीएलसी फ़ाइल चलाता है, लेकिन पूरे समय केवल पहला फ्रेम दिखाता है।

यदि मैं ऊपर दिए गए यूआरआई के अंतिम भाग से यूआरएल लेता हूं, और ब्राउज़र पर इसे देखने का प्रयास करता हूं, तो यह एक जीआईएफ फाइल डाउनलोड करता है। मुझे लगता है कि यह समस्या है। लेकिन मुझे नहीं पता कि MPEG वीडियो का प्रारूप कैसे प्राप्त करें।

किसी ने भी अनुभव किया है?

उत्तर

5

अंत में समस्या का समाधान मिला। यह छवियों और वीडियो दोनों के लिए काम करेगा।

DevBytes:: Android 4.4 संग्रहण एक्सेस फ़्रेमवर्क:

इस वीडियो को संदर्भित ग्राहक

https://www.youtube.com/watch?v=UFj9AEz0DHQ

 
Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.setType("image/*"); 
startActivity(intent); 

जाओ उरी, और का उपयोग और इस तरह फाइल को सेव करें:

 
ParcelFileDescriptor parcelFileDescriptor = context.getContentResolver() 
       .openFileDescriptor(Uri.parse(path),"r"); 

FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor(); 

InputStream inputStream = new FileInputStream(fileDescriptor); 

BufferedInputStream reader = new BufferedInputStream(inputStream); 

// Create an output stream to a file that you want to save to 
BufferedOutputStream outStream = new BufferedOutputStream(
        new FileOutputStream(filePath)); 
byte[] buf = new byte[2048]; 
int len; 
while ((len = reader.read(buf)) > 0) { 
    outStream.write(buf, 0, len); 
} 

किसी कारण से, ParcelFileDescriptor का उपयोग किये बिना इनपुट स्ट्रीम प्राप्त करना काम नहीं करता है।

+0

इसके लिए बहुत धन्यवाद, इससे बहुत मदद मिली है! यहां एक संबंधित प्रश्न है और उत्तर स्वीकार किया गया है: http://stackoverflow.com/q/30572261/3309883 –

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