基於Xposed的虛擬攝影機
- 安卓5.0+
-
安裝此模組,並在Xposed中啟用此模組,Lsposed等包含作用域的框架需要選擇目標app,無需選擇系統框架。
-
在系統設定中,授予目標應用讀取本地存儲的許可權,並強制結束目標應用程序。 若應用程序未申請此許可權,請見步驟3。
-
打開目標應用,若應用未能獲得讀取存儲的許可權,則會以氣泡消息提示,
Camera1
目錄被重定向至應用程序私有目錄/[內部存儲]/Android/data/[應用包名]/files/Camera1/
。 若未提示,則默認Camera1
目錄為/[內部存儲]/DCIM/Camera1/
。 若目錄不存在,請手動創建。
注意:私有目錄下的
Camera1
僅對該應用單獨生效。
-
在目標應用中打開相機預覽,會以氣泡消息提示“寬:……高:……”,需要根據此解析度數據製作替換影片,放置於
Camera1
目錄下,並命名為virtual.mp4
,若打開相機並無提示消息,則無需調整影片解析度。 -
若在目標應用中拍照卻顯示真實圖片,且出現氣泡消息
發現拍照
和解析度,則需根據此解析度數據準備一張照片,命名為1000.bmp
,放入Camera1
目錄下(支持其它格式改尾碼為bmp)。 如果拍照時無氣泡消息提示,則1000.bmp
無效。 -
如果需要播放影片的聲音,需在
Camera1
目錄下創建no-silent.jpg
檔案。 -
如果需要臨時停用影片替換,需在
Camera1
目錄下創建disable.jpg
。
A1. 前置攝影機方向問題?
Q1.大多數情况下,替換前置攝影機的影片需要水准翻轉並右旋90度,並且影片處理後的解析度應與氣泡消息內解析度相同。 但有時這並不需要,具體請根據實際情況判斷。
Q2. 畫面黑屏,相機啟動失敗?
A2. 現時有些應用並不能成功替換(特別是系統相機)。 或者是因為影片路徑不對(是否創建了兩級Camera1目錄,如./DCIM/Camera1/Camera1/virtual.mp4
,但只需要一級目錄)。
Q3. 畫面花屏?
A3. 影片解析度不對。
請直接在issues中迴響,如果為BUG迴響,請附帶Xposed模組日誌資訊。
##致謝:
提供HOOK思路: https://github.com/wangwei1237/CameraHook
H264硬解碼: https://github.com/zhantong/Android-VideoToImages
JPEG轉YUV: https://blog.csdn.net/jacke121/article/details/73888732