MediaUtils
A demo of record audio and video about Android
一個(gè)在 Android 上實(shí)現(xiàn)錄像和錄音功能的小例子。
GitHub 地址:https://github.com/Werb/MediaUtils
也可直接點(diǎn)擊下載體驗(yàn) https://fir.im/cbas
- Android 的 MediaRecorder 相信用過(guò)的同學(xué)一定踩過(guò)很多坑
- 之前寫(xiě)的代碼很亂烁竭,現(xiàn)在重構(gòu)了一下碑韵,可以直接放到自己的項(xiàng)目中用
- 本例子將 MediaRecorder 進(jìn)行了重構(gòu)汹忠,通過(guò) MediaUtils 對(duì)外暴露幾個(gè)必需的方法來(lái)實(shí)現(xiàn)錄像和錄音功能
- 錄制視頻界面參考新版微信小視頻,還原了微信的動(dòng)畫(huà)效果
- 支持 Android 7.0
- 通過(guò)線程及 Exception 等手段避免了常見(jiàn)的 start failed , stop failed 等問(wèn)題
- 重繪了錄制視頻和錄音時(shí)的兩個(gè)自定義view坐榆,可在原本基礎(chǔ)上進(jìn)行二次開(kāi)發(fā)
- 提供了視頻截圖方法础废,支持雙擊放大,支持自動(dòng)對(duì)焦
- 視頻錄制暫時(shí)使用 SurfaceView + Camera , 后續(xù)會(huì)升級(jí)為 TextureView + Camera2
效果圖
video
audio
核心類(lèi)
MediaUtils
- 重構(gòu)后對(duì)外暴露只有8行代碼路星,可結(jié)合實(shí)際情況使用
// 初始化
MediaUtils mediaUtils = new MediaUtils(this);
mediaUtils.setRecorderType(MediaUtils.MEDIA_VIDEO);
mediaUtils.setTargetDir(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES));
mediaUtils.setTargetName(UUID.randomUUID() + ".mp4");
mediaUtils.setSurfaceView(surfaceView);
// 開(kāi)始錄制
mediaUtils.record()
// 結(jié)束錄制 save or unSave
mediaUtils.stopRecordUnSave();
mediaUtils.stopRecordSave();
CameraHelper
- 在 Android 中錄制視頻時(shí)顯示的 Size 和實(shí)際拍照的 Size 是由 Camera 所決定的溯街,最好的方法是計(jì)算出可支持的 PreviewSize 和 VideoSize 計(jì)算出一個(gè)合適的size,同時(shí)根據(jù)自己視頻的用途,選擇合理的 Size
- CameraHelper 參考自 GoogleCameraSample 幫助你計(jì)算出合適的 Size
CamcorderProfile
這是一個(gè)困擾我好久的地方呈昔,一直在想錄制視頻的時(shí)候挥等,如何保存清晰度的情況下,還能控制文件的大小堤尾,終于找到了一種可行的辦法
- 分辨率越大視頻大小越大肝劲,比特率越大視頻越清晰
- 清晰度由比特率決定,視頻尺寸和像素量由分辨率決定
- 比特率越高越清晰(前提是分辨率保持不變)郭宝,分辨率越大視頻尺寸越大
- CamcorderProfile 是 Android 提供的一個(gè)內(nèi)置的視頻參數(shù)配置類(lèi)
- videoFrameWidth 錄制視頻分辨率的寬
- videoFrameHeight 錄制視頻分辨率的高
- videoBitRate 這個(gè)就是比特率辞槐,決定了視頻的清晰度
- 將分辨率和比特率結(jié)合自己的需求,進(jìn)行有效的控制粘室,可以的到自己想要的效果
- 本 demo 中榄檬,錄制1080P的視頻,大小在5M左右育特,還可以再小
- 最后 videoFrameRate 幀率丙号,這個(gè)一般是攝像頭會(huì)自動(dòng)調(diào)節(jié),所以設(shè)置了恒定的有的也不起作用
自定義View
- 仿造新版微信拍攝視頻的界面缰冤,通過(guò) Paint犬缨,RectF,Canvas 繪制棉浸,很簡(jiǎn)單直接看代碼就好了
- 突然喜歡上了在 Android 畫(huà)動(dòng)效怀薛,開(kāi)啟 dribbble 抄動(dòng)效模式
好了,知識(shí)雖小但五臟俱全
歡迎使用我自己開(kāi)源的一個(gè) Android 圖片選擇器
- 【PickPhotoView】 Github 地址:https://github.com/Werb/PickPhotoSample
項(xiàng)目中關(guān)于 Android M的權(quán)限檢查用到了迷郑,我的另外一個(gè)庫(kù)
- 【PermissionsChecker】Github 地址 :https://github.com/Werb/PermissionsCheckerSample
很高興你看到這里
有時(shí)候啊 你總是在追趕前面的人
總是抱怨自己為什么不能再努力一點(diǎn)
累了你可以停下來(lái) 看看原來(lái)的自己
其實(shí)你已經(jīng)很了不起了枝恋。
我是 wanbo 。