Android添加新的视频格式--媒体库扫描
16lz
2021-01-26
需求:在mediaprovider数据库中添加.mov后缀格式的视频文件
可以使用工具MediaInfo_GUI_0.7.67_Windows.3243836749.exe 查看mov文件编码格式类型,可以到http://download.csdn.net/detail/deng0zhaotai/8767089下载。
概要完整名称 : 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格式简介 : Main@L4.0格式设置, 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 : 3Type : Time code文件格式 : QuickTime TC长度 : 1分 2秒TimeCode_FirstFrame : 00:00:00:00TimeCode_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(安卓)pcm文件播放方法(AudioTrack)
- [置顶] S5PV210 Android(安卓)fimc驱动分析 - fimc_regs.c
- iOS url 编码 解码
- 【Android(安卓)开发教程】编码实现获取与修改预设信息中的值
- Android第三十课 Jni 返回jstring字符串
- 【Android(安卓)开发教程】纯编码实现UI
- Flutter String格式化
- Android(安卓)TTS实现简单阅读器(二)
- Android(安卓)4.2官方文档chm格式下载