如果是通过url查询,
MediaStore.Audio表示音频
MediaStore.Video表示视频
给定一个文件,判断是音频还是视频,就不知道了,通过后缀也到可以,但rm之类的文件格式就无法区分是音频还是视频了

解决方案 »

  1.   

    Android 多媒体扫描过程(Android Media Scanner Process)
    http://yueguc.javaeye.com/blog/836964android.media 
    Class MediaFile
    有个getFileType(String path) 方法,返回文件的类型
    http://www.androidjavadoc.com/1.1_r1_src/android/media/MediaFile.html#getFileType(java.lang.String)
      

  2.   

    android 2.2 MediaFile 源码分析
    在MediaFile.java文件中,有个getFileType方法
    返回类型有以下:
        // Audio file types
        public static final int FILE_TYPE_MP3     = 1;
        public static final int FILE_TYPE_M4A     = 2;
        public static final int FILE_TYPE_WAV     = 3;
        public static final int FILE_TYPE_AMR     = 4;
        public static final int FILE_TYPE_AWB     = 5;
        public static final int FILE_TYPE_WMA     = 6;
        public static final int FILE_TYPE_OGG     = 7;
        public static final int FILE_TYPE_AAC     = 8;
        private static final int FIRST_AUDIO_FILE_TYPE = FILE_TYPE_MP3;
        private static final int LAST_AUDIO_FILE_TYPE = FILE_TYPE_AAC;    // MIDI file types
        public static final int FILE_TYPE_MID     = 11;
        public static final int FILE_TYPE_SMF     = 12;
        public static final int FILE_TYPE_IMY     = 13;
        private static final int FIRST_MIDI_FILE_TYPE = FILE_TYPE_MID;
        private static final int LAST_MIDI_FILE_TYPE = FILE_TYPE_IMY;
       
        // Video file types
        public static final int FILE_TYPE_MP4     = 21;
        public static final int FILE_TYPE_M4V     = 22;
        public static final int FILE_TYPE_3GPP    = 23;
        public static final int FILE_TYPE_3GPP2   = 24;
        public static final int FILE_TYPE_WMV     = 25;
        public static final int FILE_TYPE_ASF     = 26;
        private static final int FIRST_VIDEO_FILE_TYPE = FILE_TYPE_MP4;
        private static final int LAST_VIDEO_FILE_TYPE = FILE_TYPE_ASF;
        
        // Image file types
        public static final int FILE_TYPE_JPEG    = 31;
        public static final int FILE_TYPE_GIF     = 32;
        public static final int FILE_TYPE_PNG     = 33;
        public static final int FILE_TYPE_BMP     = 34;
        public static final int FILE_TYPE_WBMP    = 35;
        private static final int FIRST_IMAGE_FILE_TYPE = FILE_TYPE_JPEG;
        private static final int LAST_IMAGE_FILE_TYPE = FILE_TYPE_WBMP;
       
        // Playlist file types
        public static final int FILE_TYPE_M3U     = 41;
        public static final int FILE_TYPE_PLS     = 42;
        public static final int FILE_TYPE_WPL     = 43;
        private static final int FIRST_PLAYLIST_FILE_TYPE = FILE_TYPE_M3U;
        private static final int LAST_PLAYLIST_FILE_TYPE = FILE_TYPE_WPL;
        
      

  3.   

    mediascanner这个我知道,问题是我就是想判断sd卡里面的一个文件是音频还是视频。想自己写一个,参考opencore
      

  4.   


    他说的是读文件头,不是头文件.Opencore中并没有识别文件类型的Node,都是在上层(java层)就获得fileformat然后传递下来调用相应的Node,如果Opencore找不到相应的Node,再返回错误
      

  5.   

    文件头根据格式定义,归原公司所有,比如exe的文件头开头可能为MZ,BMP的文件头开头两个字节为BM。你自己查表吧,有特征的
      

  6.   

    我看了ffmpeg的代码。里面关于这部分也没有看明白。不知道他是如何实现区分的?你有相关资料吗?我刚接触,谢谢