Android加入新的视频格式--媒体库扫描

上下观古今,起伏千万途。这篇文章主要讲述Android加入新的视频格式--媒体库扫描相关的知识,希望能为你提供帮助。
需求:在mediaprovider数据库中加入.mov后缀格式的视频文件
能够使用工具MediaInfo_GUI_0.7.67_Windows.3243836749.exe 查看mov文件编码格式类型,能够到http://download.csdn.net/detail/deng0zhaotai/8767089下载。

Android加入新的视频格式--媒体库扫描

文章图片



概要 完整名称: 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

【Android加入新的视频格式--媒体库扫描】
















    推荐阅读