2011-11-03 25 views
13

Tôi đang tìm cách lấy độ phân giải của bất kỳ video cụ thể nào trong Android. Nó không phải làm việc với các định dạng khác so với những định dạng được hỗ trợ trong Android, nhưng nó sẽ tuyệt vời nếu nó đã làm. Nếu bạn không chắc chắn của các định dạng được hỗ trợ trong Android, vui lòng tham khảo trang này:Có thể lấy độ phân giải của video trong Android không?

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

Tôi nghĩ rằng nó có thể làm những gì tôi muốn sử dụng lớp MediaPlayer, nhưng điều đó dường như vô cùng ngu ngốc và không hiệu quả. Ngoài ra, tôi muốn một cách là tương đối nhanh chóng.

Tôi đang nhắm mục tiêu Android 3.0+, nếu điều đó tạo ra bất kỳ sự khác biệt nào. Honeycomb cũng hỗ trợ các tệp .mkv, mặc dù nó không được hỗ trợ chính thức cho đến Android 4.0.

Trả lời

40

Bạn có thể sử dụng MediaMetadataRetriever để truy xuất thông tin về độ phân giải về tệp video. Bạn sẽ sử dụng phương thức extractMetadata() và sử dụng các hằng số METADATA_KEY_VIDEO_HEIGHTMETADATA_KEY_VIDEO_WIDTH. Vì vậy, bạn muốn làm điều gì đó như thế này:

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

Điều đó có vẻ hoàn toàn rực rỡ! Không thể tin rằng tôi chưa bao giờ nghe nói về lớp học đó trước đây. Cảm ơn rất nhiều! :) –

+4

Có cách nào dễ dàng cho Pre-Honeycomb không? –

+0

MediaMetadataRetriever yêu cầu cấp API 14 – erdomester

3

Lừa cho API 10+:

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

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

Chúng tôi rất đơn giản dùng một khung ngẫu nhiên từ video của chúng tôi và phát hiện chiều rộng và chiều cao của nó.

0

Nếu bạn có nội dung video URI sau đó bạn cũng có thể sử dụng nội dung truy vấn cung cấp

Giống như

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

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