19

Android で特定のビデオの解像度を取得する方法を探しています。Android でサポートされている形式以外の形式で動作する必要はありませんが、動作するのであれば素晴らしいことです。Android でサポートされている形式がわからない場合は、次のページを参照してください。

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

クラスを使用してやりたいことを行うことは可能だと思いますMediaPlayerが、それは信じられないほど愚かで非効率的です。また、比較的高速な方法が欲しいです。

それが違いを生むなら、私はAndroid 3.0+をターゲットにしています。Honeycomb は .mkv ファイルもサポートしていますが、Android 4.0 まで正式にサポートされていません。

4

4 に答える 4

50

MediaMetadataRetrieverを使用して、ビデオ ファイルに関する解像度情報を取得できます。extractMetadata ()メソッドを使用し、METADATA_KEY_VIDEO_HEIGHTおよびMETADATA_KEY_VIDEO_WIDTH定数を使用します。したがって、次のようにします。

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);
于 2011-11-03T19:54:25.680 に答える
7

API 10+ のトリック:

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

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

ビデオからランダムなフレームを取得し、その幅と高さを検出するだけです。

于 2014-12-12T05:40:16.730 に答える
2

ビデオ コンテンツ URI がある場合は、コンテンツ プロバイダー クエリも使用できます。

お気に入り

    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));
    }
}

次の投稿を確認して、ビデオの物理パスから ContentURI を取得できます

于 2017-08-26T07:53:01.430 に答える