视频音频格式判断

  1. /** 
  2.  * 判断文件类型 
  3.  * MediaScanner helper class. 
  4.  */  
  5. public class MediaFile {  
  6.     // comma separated list of all file extensions supported by the media scanner  
  7.     public static String sFileExtensions;  
  8.   
  9.     // Audio file types  
  10.     public static final int FILE_TYPE_MP3     = 1;  
  11.     public static final int FILE_TYPE_M4A     = 2;  
  12.     public static final int FILE_TYPE_WAV     = 3;  
  13.     public static final int FILE_TYPE_AMR     = 4;  
  14.     public static final int FILE_TYPE_AWB     = 5;  
  15.     public static final int FILE_TYPE_WMA     = 6;  
  16.     public static final int FILE_TYPE_OGG     = 7;  
  17.     private static final int FIRST_AUDIO_FILE_TYPE = FILE_TYPE_MP3;  
  18.     private static final int LAST_AUDIO_FILE_TYPE = FILE_TYPE_OGG;  
  19.   
  20.     // MIDI file types  
  21.     public static final int FILE_TYPE_MID     = 11;  
  22.     public static final int FILE_TYPE_SMF     = 12;  
  23.     public static final int FILE_TYPE_IMY     = 13;  
  24.     private static final int FIRST_MIDI_FILE_TYPE = FILE_TYPE_MID;  
  25.     private static final int LAST_MIDI_FILE_TYPE = FILE_TYPE_IMY;  
  26.      
  27.     // Video file types  
  28.     public static final int FILE_TYPE_MP4     = 21;  
  29.     public static final int FILE_TYPE_M4V     = 22;  
  30.     public static final int FILE_TYPE_3GPP    = 23;  
  31.     public static final int FILE_TYPE_3GPP2   = 24;  
  32.     public static final int FILE_TYPE_WMV     = 25;  
  33.     private static final int FIRST_VIDEO_FILE_TYPE = FILE_TYPE_MP4;  
  34.     private static final int LAST_VIDEO_FILE_TYPE = FILE_TYPE_WMV;  
  35.       
  36.     // Image file types  
  37.     public static final int FILE_TYPE_JPEG    = 31;  
  38.     public static final int FILE_TYPE_GIF     = 32;  
  39.     public static final int FILE_TYPE_PNG     = 33;  
  40.     public static final int FILE_TYPE_BMP     = 34;  
  41.     public static final int FILE_TYPE_WBMP    = 35;  
  42.     private static final int FIRST_IMAGE_FILE_TYPE = FILE_TYPE_JPEG;  
  43.     private static final int LAST_IMAGE_FILE_TYPE = FILE_TYPE_WBMP;  
  44.      
  45.     // Playlist file types  
  46.     public static final int FILE_TYPE_M3U     = 41;  
  47.     public static final int FILE_TYPE_PLS     = 42;  
  48.     public static final int FILE_TYPE_WPL     = 43;  
  49.     private static final int FIRST_PLAYLIST_FILE_TYPE = FILE_TYPE_M3U;  
  50.     private static final int LAST_PLAYLIST_FILE_TYPE = FILE_TYPE_WPL;  
  51.       
  52.     //静态内部类  
  53.     static class MediaFileType {  
  54.       
  55.         int fileType;  
  56.         String mimeType;  
  57.           
  58.         MediaFileType(int fileType, String mimeType) {  
  59.             this.fileType = fileType;  
  60.             this.mimeType = mimeType;  
  61.         }  
  62.     }  
  63.       
  64.     private static HashMap<String, MediaFileType> sFileTypeMap   
  65.             = new HashMap<String, MediaFileType>();  
  66.     private static HashMap<String, Integer> sMimeTypeMap   
  67.             = new HashMap<String, Integer>();              
  68.     static void addFileType(String extension, int fileType, String mimeType) {  
  69.         sFileTypeMap.put(extension, new MediaFileType(fileType, mimeType));  
  70.         sMimeTypeMap.put(mimeType, new Integer(fileType));  
  71.     }  
  72.     static {  
  73.         addFileType("MP3", FILE_TYPE_MP3, "audio/mpeg");  
  74.         addFileType("M4A", FILE_TYPE_M4A, "audio/mp4");  
  75.         addFileType("WAV", FILE_TYPE_WAV, "audio/x-wav");  
  76.         addFileType("AMR", FILE_TYPE_AMR, "audio/amr");  
  77.         addFileType("AWB", FILE_TYPE_AWB, "audio/amr-wb");  
  78.         addFileType("WMA", FILE_TYPE_WMA, "audio/x-ms-wma");      
  79.         addFileType("OGG", FILE_TYPE_OGG, "application/ogg");      
  80.    
  81.         addFileType("MID", FILE_TYPE_MID, "audio/midi");  
  82.         addFileType("XMF", FILE_TYPE_MID, "audio/midi");  
  83.         addFileType("RTTTL", FILE_TYPE_MID, "audio/midi");  
  84.         addFileType("SMF", FILE_TYPE_SMF, "audio/sp-midi");  
  85.         addFileType("IMY", FILE_TYPE_IMY, "audio/imelody");  
  86.           
  87.         addFileType("MP4", FILE_TYPE_MP4, "video/mp4");  
  88.         addFileType("M4V", FILE_TYPE_M4V, "video/mp4");  
  89.         addFileType("3GP", FILE_TYPE_3GPP, "video/3gpp");  
  90.         addFileType("3GPP", FILE_TYPE_3GPP, "video/3gpp");  
  91.         addFileType("3G2", FILE_TYPE_3GPP2, "video/3gpp2");  
  92.         addFileType("3GPP2", FILE_TYPE_3GPP2, "video/3gpp2");  
  93.         addFileType("WMV", FILE_TYPE_WMV, "video/x-ms-wmv");  
  94.   
  95.         addFileType("JPG", FILE_TYPE_JPEG, "image/jpeg");  
  96.         addFileType("JPEG", FILE_TYPE_JPEG, "image/jpeg");  
  97.         addFileType("GIF", FILE_TYPE_GIF, "image/gif");  
  98.         addFileType("PNG", FILE_TYPE_PNG, "image/png");  
  99.         addFileType("BMP", FILE_TYPE_BMP, "image/x-ms-bmp");  
  100.         addFileType("WBMP", FILE_TYPE_WBMP, "image/vnd.wap.wbmp");  
  101.    
  102.         addFileType("M3U", FILE_TYPE_M3U, "audio/x-mpegurl");  
  103.         addFileType("PLS", FILE_TYPE_PLS, "audio/x-scpls");  
  104.         addFileType("WPL", FILE_TYPE_WPL, "application/vnd.ms-wpl");  
  105.   
  106.         // compute file extensions list for native Media Scanner  
  107.         StringBuilder builder = new StringBuilder();  
  108.         Iterator<String> iterator = sFileTypeMap.keySet().iterator();  
  109.           
  110.         while (iterator.hasNext()) {  
  111.             if (builder.length() > 0) {  
  112.                 builder.append(',');  
  113.             }  
  114.             builder.append(iterator.next());  
  115.         }   
  116.         sFileExtensions = builder.toString();  
  117.     }  
  118.       
  119.     public static final String UNKNOWN_STRING = "<unknown>";  
  120.       
  121.     public static boolean isAudioFileType(int fileType) {  
  122.         return ((fileType >= FIRST_AUDIO_FILE_TYPE &&  
  123.                 fileType <= LAST_AUDIO_FILE_TYPE) ||  
  124.                 (fileType >= FIRST_MIDI_FILE_TYPE &&  
  125.                 fileType <= LAST_MIDI_FILE_TYPE));  
  126.     }  
  127.       
  128.     public static boolean isVideoFileType(int fileType) {  
  129.         return (fileType >= FIRST_VIDEO_FILE_TYPE &&  
  130.                 fileType <= LAST_VIDEO_FILE_TYPE);  
  131.     }  
  132.       
  133.     public static boolean isImageFileType(int fileType) {  
  134.         return (fileType >= FIRST_IMAGE_FILE_TYPE &&  
  135.                 fileType <= LAST_IMAGE_FILE_TYPE);  
  136.     }  
  137.       
  138.     public static boolean isPlayListFileType(int fileType) {  
  139.         return (fileType >= FIRST_PLAYLIST_FILE_TYPE &&  
  140.                 fileType <= LAST_PLAYLIST_FILE_TYPE);  
  141.     }  
  142.       
  143.     public static MediaFileType getFileType(String path) {  
  144.         int lastDot = path.lastIndexOf(".");  
  145.         if (lastDot < 0)  
  146.             return null;  
  147.         return sFileTypeMap.get(path.substring(lastDot + 1).toUpperCase());  
  148.     }  
  149.     //根据视频文件路径判断文件类型  
  150.     public static boolean isVideoFileType(String path) {  //自己增加  
  151.         MediaFileType type = getFileType(path);  
  152.         if(null != type) {  
  153.             return isVideoFileType(type.fileType);  
  154.         }  
  155.         return false;  
  156.     }  
  157.     //根据音频文件路径判断文件类型  
  158.     public static boolean isAudioFileType(String path) {  //自己增加  
  159.         MediaFileType type = getFileType(path);  
  160.         if(null != type) {  
  161.             return isAudioFileType(type.fileType);  
  162.         }  
  163.         return false;  
  164.     }  
  165.     //根据mime类型查看文件类型  
  166.     public static int getFileTypeForMimeType(String mimeType) {  
  167.         Integer value = sMimeTypeMap.get(mimeType);  
  168.         return (value == null ? 0 : value.intValue());  
  169.     }  
  170.   
  171. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值