需求:在mediaprovider資料庫中添加.mov字尾格式的視訊檔案
可以使用工具MediaInfo_GUI_0.7.67_Windows.3243836749.exe 檢視mov檔案編碼格式類型,可以到http://download.csdn.net/detail/deng0zhaotai/8767089下載下傳。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CZlRmN1QDZhZzN4QWYhJzMiV2Y1Y2N1AzNzMWYykjMi9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
概要
完整名稱 : D:\好歌曲學員合.mov
檔案格式 : MPEG-4
格式簡介 : QuickTime
編碼設定ID : qt
檔案大小 : 83.8 MiB
長度 : 1分 2秒
平均混合碼率 : 11.3 Mbps
編碼日期 : UTC 2015-04-23 06:07:05
标記日期 : UTC 2015-04-23 06:08:38
編碼函數庫 : Apple QuickTime
㏕IM : 00:00:00:00
㏕SC : 25
㏕SZ : 1
視訊
ID : 1
檔案格式 : AVC
檔案格式/資訊 : Advanced Video Codec
格式簡介 : [email protected]
格式設定, CABAC : 否
格式設定, ReFrames : 2 frames
格式設定, GOP : M=1, N=50
編碼設定ID : avc1
編碼設定ID/資訊 : Advanced Video Coding
長度 : 1分 2秒
碼率 : 11.2 Mbps
畫面寬度 : 1 920像素
畫面高度 : 1 080像素
畫面比例 : 16:9
幀率模式 : 恒定
幀率 : 25.000 fps
色彩空間 : YUV
色度抽樣 : 4:2:0
位深度 : 8位
掃描方式 : 逐行掃描
bits/(pixel*frame)(資料密度) : 0.216
大小 : 82.8 MiB (99%)
标題 : 蘋果視訊媒體處理程式 / Apple 替身資料處理程式
語言 : English
編碼日期 : UTC 2015-04-23 06:07:05
标記日期 : UTC 2015-04-23 06:08:38
顔色初選 : BT.709
傳輸特質 : BT.709
矩陣系數 : BT.709
音頻
ID : 2
檔案格式 : AAC
檔案格式/資訊 : Advanced Audio Codec
格式簡介 : LC
編碼設定ID : 40
長度 : 1分 2秒
Source_Duration/String : 1分 2秒
碼率模式 : CBR
碼率 : 120 Kbps
額定碼率 : 128 Kbps
聲道 : 2聲道
聲道位置 : Front: L R
采樣率 : 48.0 KHz
壓縮模式 : 有損壓縮
大小 : 909 KiB (1%)
Source_StreamSize/String : 909 KiB (1%)
标題 : 蘋果聲頻媒體處理程式 / Apple 替身資料處理程式
語言 : English
編碼日期 : UTC 2015-04-23 06:07:05
标記日期 : UTC 2015-04-23 06:08:38
其它
ID : 3
Type : Time code
檔案格式 : QuickTime TC
長度 : 1分 2秒
TimeCode_FirstFrame : 00:00:00:00
TimeCode_Settings : Striped
标題 : 時間碼媒體處理程式 / Apple 替身資料處理程式
語言 : English
編碼日期 : UTC 2015-04-23 06:08:38
标記日期 : UTC 2015-04-23 06:08:38可以看到兩個有用的資訊
檔案格式 : MPEG-4
格式簡介 : QuickTime
需要修改的檔案:frameworks/base/media/java/android/media/MediaFile.java,我們可以參考已有的視訊格式添加
// Video file types
public static final int FILE_TYPE_FLV = 20;
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;
public static final int FILE_TYPE_MKV = 27;
public static final int FILE_TYPE_MP2TS = 28;
public static final int FILE_TYPE_AVI = 29;
public static final int FILE_TYPE_WEBM = 30;
public static final int FILE_TYPE_MOV = 52;
private static final int FIRST_VIDEO_FILE_TYPE = FILE_TYPE_FLV;
private static final int LAST_VIDEO_FILE_TYPE = FILE_TYPE_WEBM;
添加:public static final int FILE_TYPE_MOV = 52; 這一行
addFileType("MPEG", FILE_TYPE_MP4, "video/mpeg", MtpConstants.FORMAT_MPEG);
addFileType("MPG", FILE_TYPE_MP4, "video/mpeg", MtpConstants.FORMAT_MPEG);
addFileType("MP4", FILE_TYPE_MP4, "video/mp4", MtpConstants.FORMAT_MPEG);
addFileType("MOV", FILE_TYPE_MOV, "video/quicktime", MtpConstants.FORMAT_MPEG);
addFileType("M4V", FILE_TYPE_M4V, "video/mp4", MtpConstants.FORMAT_MPEG);
addFileType("3GP", FILE_TYPE_3GPP, "video/3gpp", MtpConstants.FORMAT_3GP_CONTAINER);
addFileType("3GPP", FILE_TYPE_3GPP, "video/3gpp", MtpConstants.FORMAT_3GP_CONTAINER);
addFileType("3G2", FILE_TYPE_3GPP2, "video/3gpp2", MtpConstants.FORMAT_3GP_CONTAINER);
addFileType("3GPP2", FILE_TYPE_3GPP2, "video/3gpp2", MtpConstants.FORMAT_3GP_CONTAINER);
addFileType("MKV", FILE_TYPE_MKV, "video/x-matroska");
addFileType("WEBM", FILE_TYPE_WEBM, "video/webm");
addFileType("TS", FILE_TYPE_MP2TS, "video/mp2ts");
addFileType("AVI", FILE_TYPE_AVI, "video/avi");
addFileType("FLV", FILE_TYPE_FLV, "video/flv");由
檔案格式 : MPEG-4
格式簡介 : QuickTime
資訊可知,添加一行:addFileType("MOV", FILE_TYPE_MOV, "video/quicktime", MtpConstants.FORMAT_MPEG);
還要修改一個函數:
public static boolean isVideoFileType(int fileType) {
return (fileType >= FIRST_VIDEO_FILE_TYPE &&
fileType <= LAST_VIDEO_FILE_TYPE)
|| (fileType >= FIRST_VIDEO_FILE_TYPE2 &&
fileType <= LAST_VIDEO_FILE_TYPE2)
|| (fileType == FILE_TYPE_MOV);
}添加條件:fileType == FILE_TYPE_MOV
可以把資料庫删除:rm -rf /data/data/com.android.providers.media/databases/
然後重新開機手機,就可以在video視圖中找到.mov的視訊
當然以上代碼可以作下優化,
public static final int FILE_TYPE_WEBM = 30;
public static final int FILE_TYPE_MOV = 31;
private static final int FIRST_VIDEO_FILE_TYPE = FILE_TYPE_FLV;
private static final int LAST_VIDEO_FILE_TYPE = FILE_TYPE_MOV;那麼涉及到後面就需要修改
// 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;
public static final int FILE_TYPE_WEBP = 36;
private static final int FIRST_IMAGE_FILE_TYPE = FILE_TYPE_JPEG;
private static final int LAST_IMAGE_FILE_TYPE = FILE_TYPE_WEBP;
// 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;
public static final int FILE_TYPE_HTTPLIVE = 44;
public static final int FILE_TYPE_DASH = 45;
private static final int FIRST_PLAYLIST_FILE_TYPE = FILE_TYPE_M3U;
private static final int LAST_PLAYLIST_FILE_TYPE = FILE_TYPE_DASH;
// Drm file types
public static final int FILE_TYPE_FL = 51;修改後的檔案: http://download.csdn.net/detail/deng0zhaotai/8767221