2011-11-03 4 views
13

मैं एंड्रॉइड में दिए गए किसी भी वीडियो के संकल्प को पाने का एक तरीका ढूंढ रहा हूं। इसे एंड्रॉइड में समर्थित लोगों की तुलना में अन्य प्रारूपों के साथ काम करने की ज़रूरत नहीं है, लेकिन अगर यह किया तो यह बहुत अच्छा होगा। आप एंड्रॉयड में समर्थित स्वरूपों की अनिश्चित हैं, तो इस पेज का संदर्भ लें:क्या एंड्रॉइड में एक वीडियो का संकल्प प्राप्त करना संभव है?

http://developer.android.com/guide/appendix/media-formats.html

मुझे लगता है कि मैं क्या MediaPlayer वर्ग का उपयोग कर चाहते हो सकता है, लेकिन यह अविश्वसनीय रूप से बेवकूफ और अक्षम लगता है। इसके अलावा, मुझे एक तरीका चाहिए कि अपेक्षाकृत तेज है।

मैं एंड्रॉइड 3.0+ को लक्षित कर रहा हूं, अगर इससे कोई फर्क पड़ता है। हनीकॉम भी एमएमवी फाइलों का समर्थन करता है, हालांकि यह एंड्रॉइड 4.0 तक आधिकारिक तौर पर समर्थित नहीं है।

उत्तर

40

आप वीडियो फ़ाइल के बारे में समाधान जानकारी पुनर्प्राप्त करने के लिए MediaMetadataRetriever का उपयोग कर सकते हैं। आप extractMetadata() विधि का उपयोग करेंगे और METADATA_KEY_VIDEO_HEIGHT और METADATA_KEY_VIDEO_WIDTH स्थिरांक का उपयोग करेंगे। एपीआई 10+ के लिए

MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever(); 
metaRetriever.setDataSource(/* file descriptor or file path goes here */); 
String height = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT); 
String width = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH); 
+0

बिल्कुल शानदार लगती है! विश्वास नहीं कर सकता मैंने पहले उस वर्ग के बारे में कभी नहीं सुना है। आपका बहुत बहुत धन्यवाद! :) –

+4

क्या प्री-हनीकॉम के लिए कोई आसान तरीका है? –

+0

MediaMetadataRetriever को API स्तर 14 – erdomester

3

चाल:: तो आप कुछ इस तरह करते हैं होता

MediaMetadataRetriever mRetriever = new MediaMetadataRetriever(); 
mRetriever.setDataSource("video_file_path"); 
Bitmap frame = mRetriever.getFrameAtTime(); 

int width = frame.getWidth(); 
int height = frame.getHeight(); 

हम अपने वीडियो से एक यादृच्छिक फ्रेम लेने और उसके चौड़ाई और ऊंचाई का पता लगाने सरल हैं।

0

यदि आप वीडियो सामग्री यूआरआई तो आप भी सामग्री प्रदाता क्वेरी का उपयोग कर सकते

तरह

Cursor mediaCursor = getContentResolver().query(
         videoContentURI, 
         {MediaStore.Video.Media.RESOLUTION}, null, null, null); 
     if (mediaCursor != null) { 
        if (mediaCursor.moveToFirst()) { 
     //The resolution of the video file, formatted as "XxY" 
     String resolution=mediaCursor.getString(mediaCursor 
            .getColumnIndex(MediaStore.Video.Media.RESOLUTION)); 
    } 
} 

You can check following post to get ContentURI from video Physical Path