Android - Windows 多样化投屏方案
需求
投屏有兩種方式:鏡像屏幕和擴展屏幕,分別在兩個屏幕上顯示相同、不同的內容。
多樣化場景下,需要結合兩種方式,比如:
- 在兩種方式下切換,某些頁面(Activity)鏡像投屏,某些需要在擴展屏另外展現不同的內容
- 兩種方式疊加,在鏡像上面顯示部分不同的內容
- 部分區域鏡像,類型PPT演講者模式
方案
(一)多端互動
局域網發現
采用mDns相對更獨立靈活一些,Android原生有API(NSD)。在Windows上需要應用自己集成mDns開發。
服務請求
采用定制推送協議,基于HTTP。
推送協議將來還要進一步擴展為本地HTTP服務。
???????(二)投屏(鏡像)
投屏依賴多端互動技術,另外包括4部分技術:屏幕截取、視頻錄制、視頻傳輸,視頻播放。
???????屏幕截取
投屏中錄制屏幕,在Android上相關技術有:
使用MediaProjection/VirtualDisplay,VirtualDisplay可以鏡像屏幕(相同內容),也可以顯示獨立的內容。
使用Presentation可以實現擴展屏幕,擴展屏幕與主屏幕顯示的內容不同。
使用屏幕鏡像,如果不想顯示隱私內容,需要設置SECRET標志,此時顯示背景SurfaceView的默認內容。背景SurfaceView需要應用自行添加。
如果只投影主屏幕的一部分鏡像到第二屏,那么一種可能的方案是用OpenGL截取部分紋理;另一種簡單的方案是用Canvas在第二屏幕再次繪制。
???????視頻錄制
考慮后續用ffplay播放,直接調用 MediaCodec,將輸出的 h264 視頻幀直接輸出。
???????視頻傳輸
基于 sun http (com.sun.net.httpserver.HttpServer) 搭建一個簡單的 HTTP 服務器。
???????視頻播放
主要考慮變幀率、低延遲支持。基礎的WMP加載延遲不好控制,基本不考慮,需要進一步調研其他直接基于DShow的播放器。
Vlc會主動丟幀。
Ffplay在變幀率上表現可以,但是有5秒延遲。
總結
以上是生活随笔為你收集整理的Android - Windows 多样化投屏方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: office办公所有版本齐全
- 下一篇: 前端如何测试自己项目的SEO