基於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
無效。 -
如果需要播放影片的聲音,需在
/[內部儲存]/DCIM/Camera1/
目錄下建立no-silent.jpg
檔案。(全域即時生效) -
如果需要臨時停用影片取代,需在
/[內部儲存]/DCIM/Camera1/
目錄下建立disable.jpg
檔案。(全域即時生效) -
如果覺得Toast消息煩,可以在
/[內部儲存]/DCIM/Camera1/
目錄下建立no_toast.jpg
檔案。 (全域即時生效) -
目錄重定向消息預設只顯示一次,如果錯過了目錄重定向的Toast消息,可以在
/[內部儲存]/DCIM/Camera1/
目錄下建立force_show.jpg
檔案來覆蓋預設設定。 (全域即時生效)
10.如果需要為每一個應用程式分配影片,可以在/[內部儲存]/DCIM/Camera1/
目錄下建立private_dir.jpg
強制使用應用程式私有目錄。 (全域即時生效)
注意:6~10的配寘開關均在應用程式中,您可以快捷地在應用程式中配寘,也可以手動建立檔案。
A1. 前置攝影機方向問題?
Q1.大多數情況下,取代前置攝影機的影片需要水準翻轉並右旋90度,並且影片處理後的解析度應與氣泡消息內解析度相同。 但有時這並不需要,具體請根據實際情況判斷。
Q2. 畫面黑屏,相機啟動失敗?
A2. 現時有些應用並不能成功取代(特別是系統相機)。 或者是因為影片路徑不對(是否建立了兩級Camera1目錄,如./DCIM/Camera1/Camera1/virtual.mp4
,但只需要一級目錄)。
Q3. 畫面花屏?
A3. 影片解析度不對。
Q4. 畫面扭曲,變形?
A4. 請使用剪輯軟體修改原影片來匹配螢幕。
Q5. 建立disable. jpg
無效?
A5. 如果應用版本<=4.0
,那麼[內部儲存]/DCIM/Camera1
目錄下的檔案對具有訪問儲存許可權的應用生效,其餘無許可權應用應在私有目錄下建立
如果應用版本>=4.1
,那麼應在[內部儲存]/DCIM/Camera1
建立,無論目標應用是否具有許可權。
請直接在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