Android加入新的视频格式--媒体库扫描
需求:在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 : 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;
Android加入新的视频格式--媒体库扫描的更多相关文章
- Android 插入图片到媒体库
今天介绍一下在Android中怎么插入图片到媒体库,下面看代码: final String titleName = Function.md5(imageUri.toLowerCase()) + &qu ...
- 【FFMPEG】各种音视频编解码学习详解 h264 ,mpeg4 ,aac 等所有音视频格式
目录(?)[-] 编解码学习笔记二codec类型 编解码学习笔记三Mpeg系列Mpeg 1和Mpeg 2 编解码学习笔记四Mpeg系列Mpeg 4 编解码学习笔记五Mpeg系列AAC音频 编解码学习笔 ...
- 如何扫描出Android系统媒体库中视频文件
Android系统启动时会去扫描系统文件,并将系统支持的视频文件(mp4,3gp,wmv)扫描到媒体库(MediaStore)中,下面代码演示如何获得这些文件的信息: publicstatic Lis ...
- Android 获取视频照片与刷新媒体库
1.获取本地所有视频 public void getLoadMedia() { Cursor cursor = UILApplication.instance.getApplicationContex ...
- Android media媒体库分析之:MediaProvider
在做Android媒体应用程序时(Audio.Image.Video)需要对Android的媒体提供者(MediaProvider)做详细的分析,下面记录一下我的收获: 一.获取MediaProvid ...
- Android——媒体库 相关知识总结贴
Android媒体库 http://www.apkbus.com/android-19283-1-1.html Android本地图片选择打开媒体库,选择图片 http://www.apkbus.co ...
- 最简单的基于FFmpeg的移动端样例:Android 视频解码器-单个库版
===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...
- 主攻互动娱乐和视频自媒体,新浪SHOW是不是桩好生意?
对互联网互动服务平台而言,近期几年会是空前重要的发展阶段,首先,互联网行业的持续发展.网民数量的持续激增必定带动网络互动朝更普及的方向迈进.其市场规模也必定会呈极数增长.其次,互动娱乐.视频自 ...
- Android官方新推的DI库 Hilt
Android官方新推的DI库 Hilt Hilt是Google Android官方新推荐的依赖注入工具. 已加入到官方文档: Dependency injection with Hilt. 目前是a ...
随机推荐
- JS基础用法-向数组指定位置插入对象
在做省市区三级联动的时候,需要在省市区默认位置放上请选择字样. 由于后台的API接口返回的没有请选择字样,那么就需要给返回的数组手动增加请选择 代码如下 // 原来的数组 var array = [& ...
- Ubuntu 14.04 LTS+SublimeText3+中文输入
文本编辑器,我习惯用Sublime Text,因为很好用啊,至于那些大神们说的Vim, Emacs,我目前还用不上:Vim偶尔会用到,gedit也会常用到,emacs几乎没用过,也不会: 一.安装: ...
- Job的使用
1.Job完成状态监听: job.addJobChangeListener(new JobChangeAdapter() { @Override publi ...
- Python与数据库[2] -> 关系对象映射/ORM[1] -> sqlalchemy 的基本使用示例
sqlalchemy 的基本使用示例 下面的例子中将利用sqlalchemy进行数据库的连接,通过orm方式利用类实例属性操作的方式对数据库进行相应操作,同时应用一些常用的函数. 完整代码如下: fr ...
- HKSCS
香港增补字符集(HKSCS) 背景介绍 背景资料 ======== 目前,大部份不同語文的電腦系統,都有不同的編碼標準.如中文的系統就有BIG5和GB2312/GBK.各種文字有不同的文字編碼,不同系 ...
- Codeforces 757 E Bash Plays with Functions
Discription Bash got tired on his journey to become the greatest Pokemon master. So he decides to ta ...
- Bluetooth篇 开发实例之六 蓝牙RSSI计算距离
计算公式: d = 10^((abs(RSSI) - A) / (10 * n)) 其中: d - 计算所得距离 RSSI - 接收信号强度(负值) A - 发射端和接收端相隔1米时的信号强度 n - ...
- cocurrent包countdownlatch 倒计时门栓
latch 英[lætʃ]美[lætʃ]n. 门闩; 弹簧锁; 锁是每个类的成员变量,它是这个类的固有属性,当然要声明为成员变量. 成员变量的初始化是通过对象的构造函数的. 锁是每个类的成员变量,它是 ...
- 基于Rebound制造绚丽的动画效果-入门篇
基于Rebound制造绚丽的动画效果-入门篇 Rebound是什么? Rebound是一个来自 Facebook 公司的 Java物理和动画库.Rebound spring 模型可用于创建动画,让你感 ...
- wildfly配置PostgreSQL数据源
wildfly配置PostgreSQL数据源 很久以前写过在JBoss AS7上如何配置PostgreSQL数据源,此方法在wildfly上依然有效.不过,通过wildfly的命令行工具可以有更简单的 ...