⑴ android調用系統相機實現拍照和視頻錄制
(1)申請許可權
(2)設置布局
這里做了一個簡單的布局:添加了一個按鈕和一個ImageView控制項用於顯示拍攝的圖像。
(3)為按鈕添加點擊事件監聽
點擊按鈕時,調用系統相機進行拍照,並在確定後將圖像顯示在ImageView控制項中。
(1)申請許可權
(2)設置布局
添加了一個按鈕和一個VideoView控制項用於顯示錄制的視頻。
(3)為按鈕添加點擊事件監聽
同前面一樣,點擊按鈕後調用系統相機進行錄制視頻,錄制完成後點擊確定即可將錄制的視頻顯示在VideoView控制項中。
對於Android11.0的版本,在調用系統相近進行視頻錄制的時候,即使在AndroidMenifest.xml中申請了CAMERA許可權,還是會在程序運行時報錯: Permission Denial , . .... .... with revoked permission android.permission.CAMERA
解決方法是在程序中動態申請許可權:
寫在最後:文章是在學習過程中做的學習筆記,同時與志同道合者分享,文章內容均經過我自己實驗證實可行,如有問題歡迎留言,很高興一起交流討論,共同進步!
⑵ ADB錄制視頻 Android 視頻錄制命令 screenrecord
在Android 4.4(Kitkat - API level 19)上集成了一個比較好用的視頻(.mp4格式)錄制功能 – screenrecord 。
使用方法
1. 基本用法
$ adb shell screenrecord /sdcard/myscreenrecord.mp4
/sdcard/myscreenrecord.mp4 為視頻錄制文件路徑
錄制默認解析度,默認4Mbps,默認180s的視頻,保存到sdcard上名為myscreenrecord.mp4
2. 旋轉(參數:–rotate)
$ adb shell screenrecord --rotate /sdcard/myscreenrecord.mp4
旋轉90度
3. 指定解析度(參數:–size)
$adb shell screenrecord --size 112x112 /sdcard/myscreenrecord.mp4
解析度為112x112,建議不要指定解析度,使用默認解析度效果最佳;
注意,解析度不是完全可以隨意定製的,比如在我手機上錄制100x100的會提示錯誤:
The max width/height supported by codec is1920x1088
100x100is not supported by codec, suggest to set it as112x112
4. 指定比特率(參數:–bit-rate)
$adb shell screenrecord --bit -rate 8000000 /sdcard/myscreenrecord.mp4
設置比特率為8Mbps,比特率越大,文件越大,畫面越清晰;
5. 限制錄制時間 (參數: –time-limit)
$adb shell screenrecord --time -limit 10 /sdcard/myscreenrecord.mp4
限制視頻錄制時間為10s,如果不限制,默認180s
6. 導出視頻
$adb pull /sdcard/myscreenrecord.mp4
7. 注意
請關注視頻文件生成大小,根據自身情況而定;
暫不支持聲音;
咱時不支持模擬器錄制( 模擬器錄制看這里 ),出現如下提示:Unable to get output buffers (err=-38)
Encoder failed (err=-38),可認為是此原因;
8. 命令查看
adb shell screenrecord --help
Usage: screenrecord [options]
Records the device's display to a .mp4 file.
Options:
--size WIDTHxHEIGHT
Set the video size, e.g."1280x720". Default is the device's main
display resolution (if supported), 1280x720if not. For best
results,use a size supported by the AVC encoder.
--bit -rate RATE
Set the video bit rate, in megabits per second. Default4Mbps.
--time -limit TIME
Set the maximum recording time, in seconds. Default / maximum is180.
--rotate
Rotate the output90 degrees.
--verbose
Display interesting information on stdout.
--help
Showthis message.
Recording continues until Ctrl-C is hit or the time limit is reached.
⑶ android開發設置屏蔽錄制
項目開發中,為了用戶信息的安全,會有禁止頁面被截屏、錄屏的需求。
這類資料,在網上有很多,一般都是通過設置Activity的Flag解決,如:
//禁止頁面被截屏、錄屏getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
這種設置可解決一般的防截屏、錄屏的需求。
如果頁面中有彈出Popupwindow,在錄屏視頻中的效果是:
非Popupwindow區域為黑色
但Popupwindow區域仍然是可以看到的
如下面兩張Gif圖所示:
未設置FLAG_SECURE,錄屏的效果,如下圖(git圖片中間的水印忽略):
設置了FLAG_SECURE之後,錄屏的效果,如下圖(git圖片中間的水印忽略):
⑷ 自家開發的AndroidApp裡面自帶的錄像功能,錄制的畫面變形怎麼解決
相機有自己支持的預覽比例列表,是不是預覽的view的寬高比和相機支持的比例不一樣導致的?如果是的話不要固定那個view的大小,寫成根據相機支持的preview大小自適應吧,然後多出來的部分給蓋住。錄出來的video也有支持的比例列表而且和preview的還不一樣,自己設也可能會導致視頻變形
⑸ 現在 做了個 android 視頻錄制的程序 ,後置攝像頭總是旋轉90度,如何用代碼實現正常。
MediaRecorder 中一個方法setCamera();所以可以先設置好攝像頭的參數,然後再設置到MediaRecorder 中(但是錄制前需要解鎖)。
部分關鍵的代碼如果下:
//初始化相機信息
Camera mCamera = Camera.open();
Camera.Parameters params = mCamera.getParameters();
mCamera.setDisplayOrientation(90);//旋轉了90度,最好先判斷下JDK的版本號,再決定旋轉不
mCamera.setParameters(params);
mCamera.stopPreview();
mCamera.unlock();//解鎖
videoMediaRecorder.setCamera(mCamera);