3

ユーザーがメディア (ビデオ、写真、オーディオ) をインポートできるようにするアプリがあります。メディア (ビデオ、写真、オーディオ) は、アプリケーションによって (証拠として) 管理されます。一部のオーディオ録音アプリでは、オーディオが .3gp 形式 (具体的には Whats App メッセンジャー) で保存されることがわかりました。次のコードを使用して MIME タイプを取得した場合:

MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension);

それはビデオ/3gpとして返されます。これは、アプリが「ビデオ」タイプであることを意味し、サムネイルを作成しようとします(MIMEタイプの最初の部分を使用して、アプリが分類するタイプを決定します) . ただし、これはオーディオであるため、機能すると思われる特定の機能が機能しません (ビデオのサムネイルの作成など)。ファイルがビデオオーディオのみであるかどうかを判断できるようにするライブラリまたはアンドロイドで利用できるものはありますか? サムネイルの作成を試みることができると思いますが、それが失敗した場合は、ファイルがオーディオであると想定しますが、サムネイルの作成で他の多くの問題が発生する可能性があることを考えると、それは少し無理が​​あります. 何か案は?

4

4 に答える 4

3

METADATA_KEY_HAS_VIDEO

このキーが存在する場合、メディアにはビデオ コンテンツが含まれます。

于 2011-10-27T08:33:52.093 に答える
2

私はこれを行う方法を見つけました:

public static boolean is3gpFileVideo(File mediaFile) { 
        int height = 0;
        try {
            MediaPlayer mp = new MediaPlayer();
            FileInputStream fs;
            FileDescriptor fd;
            fs = new FileInputStream(mediaFile);
            fd = fs.getFD();
            mp.setDataSource(fd);
            mp.prepare(); 
            height = mp.getVideoHeight();
            mp.release();
        } catch (Exception e) {
            Log.e(TAG, "Exception trying to determine if 3gp file is video.", e);
        }
        return height > 0;
    }

したがって、メディア ファイルにビデオが含まれているかどうかを調べるには、これを使用できます。おそらく最も効率的な方法ではありませんが、アプリケーションでめったに行われないことについては、合理的な解決策のように思えます。

于 2011-10-27T22:28:16.583 に答える
1

私はこのソリューションをテストしていませんが、ビデオのサムネイルを取得することはできます。

Bitmap thumbnail = ThumbnailUtils.createVideoThumbnail(videoPath,
            MediaStore.Images.Thumbnails.MINI_KIND);

の場合はthumbnailオーディオnull、そうでない場合はビデオです。

于 2013-12-10T18:07:30.880 に答える
0

私は Alessandro Roaro のソリューションをテストしましたが、うまくいきました。現在アプリで使用しています。

私は引用します:

私はこのソリューションをテストしていませんが、ビデオのサムネイルを取得することはできます。サムネイルが null の場合は音声、それ以外の場合は動画です。

Bitmap thumbnail = ThumbnailUtils.createVideoThumbnail(videoPath,
MediaStore.Images.Thumbnails.MINI_KIND);
于 2014-04-24T09:53:33.637 に答える