PC接收手機投影軟件是一款手機投影小助手,通過這款工具可以輕松將手機上的畫面投影到PC設備,并且可以選擇下載投影資源,軟件界面較為直觀操作簡單,適用場景很多,有需要的朋友歡迎下載體驗。
軟件簡介
先說需求部分,最近我遇到一個個人需求,手機上買jd會員的時候,送了個xxx的視頻軟件會員,但是手機看片屏幕太小了,于是想投影到機頂盒上去,可是郁悶的是,
機頂盒距離我家wifi太遠,信號不好。于是想如何把這個可以在手機上看的視頻搞到電腦上看,或者可以下載下來。
于是乎開始分析,首先手機和機頂盒之間是采用DLNA進行通信,我只要找到在PC上支持DLNA并且可以作為Media Renderer的視頻軟件就好了,可是找了幾個比如mediaplayer(這個最傻,不會緩沖,每次都只能看幾秒停幾秒),
KODI(這個其實挺不錯的,但是都是只能在電腦上看,不能下載下來看)。其實仔細想想,可以在PC上播放了,為啥不能順便加個下載功能呢?
手閑的癢,就順便寫個軟件同時支持一下這兩個功能,結果沒想到一寫就寫的頭大,想吐出來。。。。。不過總算是有個樣子了。
其實也就是只要手機能播放的,并且支持投屏的,都應該用這個軟件給拉下來,偷偷說一句,我用這個軟件下載速度極快,基本上帶寬可以跑滿。
老規(guī)矩,先寫已知問題:
1:開始DLNA按鈕太丑,不說明基本上沒人知道在哪兒,點擊后沒有任何提示。
2:下載路徑無法配置
3:有時候會遇到無法連接的情況,這種情況我抓包看過,服務器返回的地址訪問就是502錯誤,就算是加上refer , user agent也不行。這個時候其他的投屏軟件也無法接受手機端的投屏。所以優(yōu)先級不是很高。
4:基本上遇到無法連接情況,大家把手機播放器和這個軟件都關掉,過幾分鐘再試試看。
5:播放后的URL會被播放器記住,但是一段時候后,URL會失效,這時候再點是沒用的。
此軟件將會調(diào)用N_m3u8DL-CLI 和FFmpeg運行,其中這兩個exe必須放在和此軟件相同目錄。(反正就是壓縮包直接解壓就好了,找個英文路徑解壓安全點。)
軟件綠色,無需安裝,無廣告插件,本來可以加52pojie首發(fā)的,實在是太累了,下個版本(如果有人要的話)再加吧。
軟件壓縮后20MB,主要是avcodec-58.dll 這個貨是ffmpeg的庫,里面是各種解碼器,我自己的程序并不大。大家如果不放心,可以到ffmpeg網(wǎng)站上下載對應的dll替換。
代碼邏輯
1:在PC端開啟該軟件,偽裝成Media Renderer,往239.255.255.250發(fā)ddsp包,注冊成為AVTransport。
2:在手機端啟動xxx客戶端,反正不局限于某客戶端,只要支持TV投影即可。 點擊投影按鈕,進行DLNA查詢。
3:發(fā)現(xiàn)AVTransport設備,手機端作為controller發(fā)協(xié)議查詢設備能力,并且在SetAVTransportURI 命令中,發(fā)送m3u8信息。 也就是說其實不管在網(wǎng)頁端如何加密,最后這里都會發(fā)送一個可用的m3u8的地址過來。
4:該軟件得到m3u8信息后,請用戶選擇是播放還是下載。
5:播放采用的是ffmpeg解碼器進行解碼播放。
6:下載m3u8部分采用的是論壇里面【開源M3U8下載器】N_m3u8DL-CLI @我是你老大, (感謝共享這么好用的軟件)因為這個解碼器可以傳遞參數(shù),還有界面,省的再寫了。呵呵。
其實總體思路并不難,這里記錄一下遇到的坑:
1:為了保證Upnp的兼容性,基本上市面上的開源庫都找了一遍,python的,java的,C++的,最后選用的是Platinum的開源庫,接口比較豐富,而且兼容性較好,實際測試基本上開啟后馬上就可以被手機端識別到設備。
2:FFMpeg的集成,遇到很多很多兼容性的問題,.net framework 和.net core的沖突,sdl效率問題等等,真是郁悶至極,最后沒辦法,現(xiàn)學的C#,用的是Unosquare.FFME,這個庫的好處是定制靈活,對外暴露的接口較多,集成方便,后續(xù)可以擴展。
3:m3u8下載部分,N_m3u8DL-CLI還是挺好用的,主要是可以有命令行參數(shù),再次感謝一下。