編輯:關於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 格式簡介 : [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);由
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
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;
1 背景大家都知道Android View提供了scrollTo()與scrollBy()方法來供我們進行View的滾動,但是有個問題就是他的滾動很蛋疼,疼在是瞬時挪動到
如何在圖片上畫畫呢?這裡寫了一個demo,供大家參考一、先看一眼工程結構工程結構:二、自定義view這個自定義view實現了保留軌跡的功能,代碼如下package pic
最近做項目,碰到如下的需求:ViewPager分頁,如果是6頁(包括6頁)就用圓點,如果是6頁以上就用進度條來切換。前面一種交互方法最常見,用小圓點來表示當前選中的頁面,
onLayout方法是ViewGroup中子View的布局方法,用於放置子View的位置。放置子View很簡單,只需在重寫onLayout方法,然後獲取子View的實例,