EasyPusher Android實時推送當前螢幕畫面
由於Android 5.0提供了捕獲當前螢幕畫面的SDK,基於該SDK,EasyPusher實現了實時推送手機螢幕畫面的功能。經測試,效果很不錯,延遲也比較低,畫面也比較流暢。該功能可運用到小型會議PPT演示、手遊直播等行業。
具體來說,MediaProjection 類可以將當前螢幕畫面採集到一個surface裡面,而MediaCodec可以從一個surface裡面獲取視訊資料來源。我們讓MediaProjection投射到MediaCodec建立的Surface,MediaCodec就可以獲取到MediaProjection投射的視訊了。如圖所示:
在這裡就不再詳細描述程式碼的實現,主要介紹下兩個介面:
VirtualDisplay createVirtualDisplay (String name,
int width,
int height,
int dpi,
int flags,
Surface surface,
VirtualDisplay.Callback callback,
Handler handler)
Creates a VirtualDisplay to capture the contents of the screen.
Parameters
name String: The name of the virtual display, must be non-empty.
要建立的投射器的名稱,非空
width int: The width of the virtual display in pixels. Must be greater than 0.
投射後視訊的寬度,這裡的寬度就是實際上後面MediaCodec初始化的寬度.
height int: The height of the virtual display in pixels. Must be greater than 0.
投射後視訊的高度,這裡的寬度就是實際上後面MediaCodec初始化的高度.
dpi int: The density of the virtual display in dpi. Must be greater than 0.
投射器的畫素密度,未理解啥意思,我們直接用DisplayMetrics的densityDpi即可.
flags int: A combination of virtual display flags. See DisplayManager for the full list of flags.
我們傳
DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR|DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC|DisplayManager.VIRTUAL_DISPLAY_FLAG_PRESENTATION 即可。
surface Surface: The surface to which the content of the virtual display should be rendered, or null if there is none initially.
投射器要投射到的Surface
callback VirtualDisplay.Callback: Callback to call when the virtual display's state changes, or null if none.
投射器更改後的狀態回撥,我們這裡不需要,傳null即可。
handler Handler: The Handler on which the callback should be invoked, or null if the callback should be invoked on the calling thread's main Looper.
回撥函式將在該Handler所在的執行緒呼叫,我們也不需要,傳null即可。
createInputSurface
Surface createInputSurface ()
Requests a Surface to use as the input to an encoder, in place of input buffers.
該介面建立一個作為編碼器輸入的Surface。
然後,將後者得到的Surface作為第6個引數傳給前者,前者就可以獲取到螢幕資料了~
如下圖所示,在VLC訪問RTSP地址,即可看到螢幕直播。
相關推薦
EasyPusher Android實時推送當前螢幕畫面
由於Android 5.0提供了捕獲當前螢幕畫面的SDK,基於該SDK,EasyPusher實現了實時推送手機螢幕畫面的功能。經測試,效果很不錯,延遲也比較低,畫面也比較流暢。該功能可運用到小型會議PPT演示、手遊直播等行業。 具體來說,MediaProjec
EasyPusher實現Android手機螢幕桌面直播,實時推送操作畫面,用於手遊直播等應用
本文轉自EasyDarwin開源團隊成員John的部落格:http://blog.csdn.net/jyt0551/article/details/52651194由於Android 5.0提供了捕獲當前螢幕畫面的SDK,基於該SDK,EasyPusher實現了實時推送手機螢
Android 基於Socket的長連線實現一個實時推送的功能
實現此功能需要考慮的幾點: 1)如何保證Socket長連線一直存在並有效執行 2)通過Service執行Socket,當服務端有資料時,通過廣播或者handler來更新UI 具體效果,來上程式碼: @Override public void run() { try
android 極光推送 聲音與振動 的關閉和開啟
fff getc 用法 koa pub tar brush asi drawable 前言:最近剛好在寫一些推送方面的東西,又是新手,不斷在網上找資料,很少,不過還是找到了一些,反正百度我是再也不想百度了,谷歌一下子就能找到想要的。 廢話不多說。
Android實現推送方式解決方案
都是 device andro broker dev 常見 剛才 設置 互聯網 本文介紹在Android中實現推送方式的基礎知識及相關解決方案。推送功能在手機開發中應用的場景是越來起來了,不說別的,就我們手機上的新聞客戶端就時不j時的推送過來新的消息,很方便的閱讀最新的新
Android push推送消息到達成功率優化
發送消息 data- 得到 推斷 view 使用 數據 數據庫 blog Android push推送消息到達成功率優化 問題:server向client發送消息。
基於Netty實現的Android 訊息推送(即時通訊)的解決方案
根據Netty框架實現訊息推送(即時聊天)功能. Netty框架,TCP長連線,心跳,阻塞訊息佇列,執行緒池處理訊息傳送, 基於Google ProtoBuf自定義的訊息協議, TCP粘包/拆包.... 客戶端通過TCP連線到伺服器,並建立TCP長連線;當伺服器端收到新訊息後通過TCP連線推送給
最新大前端DUX5.0模板|支援百度熊掌號+文章實時推送原創保護去除授權限制|價值799元
DUX主題5.0版本更新內容: 支援百度熊掌號,在主題設定-百度熊掌號中開啟 支援百度熊掌號 – 粉絲關注按鈕,包括吸頂bar、文章段落間bar、底部bar 支援百度熊掌號 – 新增JSON_LD資料的功能 支援百度熊掌號 – 新增文章實時推送 支援百度熊掌號 – 新增原創保護文章實時推送(編輯
JavaScript仿通知欄新訊息實時推送更新效果
用到websocket做訊息推送,其中有這樣的一個效果,在訊息列表的模組,接收到很多條資訊,展示在介面的是最近的十條接受到的訊息,實時更新模組,每次接受一條訊息,都會展示在最頂部,舊的訊息排列在地下,大致效果如下所示。 用js仿寫了一個簡單的,關於通知欄新訊息實時推送更新效果,程式碼如下:
WebSocket實時推送訊息
廢話不多說,直接上程式碼,本人親自測試,可以使用。 前臺js程式碼: var websocket; var path = window.location.host+"/web-socket"; // 首先判斷是否 支援 WebSocket if('WebSocket' in windo
轉載自-亭鈺wang,php 訊息實時推送(反ajax推送)
入口檔案index.html <!DOCTYPE HTML> <html> <head> <title>反ajax推送</title> <style>  
Android 小米推送(MiPush)的化簡深入理解
小米推送(MiPush)是小米公司向開發者提供的訊息推送服務,總的流程如官方文件所示: 由圖可知,推送是雙向的: 1.推送是可以由app的後臺端發起,應用伺服器的後
WebSocket 教程,關於伺服器實時推送
原文出處: http://www.ruanyifeng.com/blog/2017/05/websocket.html WebSocket 是一種網路通訊協議,很多高階功能都需要它。 本文介紹 WebSocket 協議的使用方法。 一、為什麼需要 WebSocket?
web的實時推送技術--websocket
Python的tornado框架中,websocket允許瀏覽器和伺服器之間進行雙向,實時,持久的,全雙工通訊。協議本身使用 ws://URL的格式,如果是加密的websocket則使用的是wss://URL websocket和其他方式的比較: 1、http協
Android 信鴿推送整合
本文是基於3.+的版本,在整合4.+的版本中,整合mid包時遇到一個問題 Manifest merger failed : uses-sdk:minSdkVersion 16 cannot be s
android pn推送是出現reomte-server-error(502)
07-23 17:18:33.249: E/Androidpn_XmppManager(17600): XMPP connection failed 07-23 17:18:33.249: E/Androidpn_XmppManager(17600): XMPPError connecti
長連線資料實時推送方案(iOS)
原文連結:www.jianshu.com/p/7e97af441… 由於業務需求,需要實現實時獲取服務端更新的資料功能,基於這個需求,進行調研及技術方案的實施,最終決定採用MQTT +ProtocolBuffer基於長連線的資料實時推送的方案;具體實現方案見本文; 本文包括三個部分:1.技術選型
WebSocket實現實時推送資料到前端
@Component @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer{ @Resource goodsWebSocketHandler handler;
關於用微軟實時推送SignalR的相關bug
常見錯誤一 未能載入檔案或程式集“Microsoft.Owin”或它的某一個依賴項。找到的程式集清單定義與程式集引用不匹配。 (異常來自 HRESULT:0x80131040) 具體錯誤如下圖: 解決方案: 1、常看bin目錄下有沒有對應的檔案:例如Microsoft.
Asp.net SignalR 實現服務端訊息實時推送到所有Web端
ASP .NET SignalR是一個ASP .NET 下的類庫,可以在ASP .NET 的Web專案中實現實時通訊。實際上 Asp.net SignalR 2 實現 服務端訊息推送到Web端, 更加簡單