最近項目有個小需求,需要ios實現手機作為服務端,將內部視頻文件,在外面能夠直接訪問
結合網上的例子,實現如下:
1、基於CocoaHTTPServer實現
2、可用pod集成,也可直接拖動文件集成
pod集成:
1、新建項目,Podfile文件如下,執行install
pod 'CocoaHTTPServer'
2、直接拖文件
a、先下載文件CocoaHTTPServer,如下:
導入CocoaHTTPServer-master
目錄下的Core文件夾
導入Vendor
目錄下的CocoaAsyncSocket
、CocoaLumberjack
文件夾
3、在 ViewController里寫開啟代碼
a、由於是swift項目,而以上庫都是基於OC的,所以需要在橋接文件import頭
b、初始化httpServer
httpServer = HTTPServer() httpServer.setType("_http.tcp") //1、播放沙盒文件 print("\(NSHomeDirectory())/Documents") //設置http服務器根目錄 httpServer.setDocumentRoot("\(NSHomeDirectory())/Documents")
注意:
1、以上的根目錄我是直接定位到Documents下的,這里可自行更換
2、這里我直接拿沙盒的文件播放的,所以demo下載后,需要在沙盒里先添加一個視頻,或者直接把我項目里放置的那個視頻拖進去。
c、開啟、關閉。(這里我為了省事,直接點擊屏幕進行控制)
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { isOPen = !isOPen if isOPen{ do{ try httpServer.start() print( "請打開以下網址: http://\(HTTPHelper.ipAddress() ?? ""):\(httpServer.listeningPort())/1.mp4") }catch{ print("啟動失敗") } }else{ httpServer.stop() } }
d、開啟后,注意打印的地址,拷貝到電腦的瀏覽器地址欄,可以直接下載,或者在vlc添加播放地址
(vlc可以直接百度下載即可。)
e、vlc里直接觀看,當然其他播放器也可以,直接把播放地址添加下。注意:這里必須保證播放器所在局域網和手機一致。
視頻播放時,可以快進、快退、暫停等操作。
寫在最后:
1、以上只是一個簡單的例子,實現了ios設備做服務端,外部設備做客戶端,直接訪問ios設備的資源(不僅僅是視頻,其他文件同理)
2、pod集成和手動集成都是可以的,見上文
3、本文是swift版本的,如果需要oc版本,可參考:https://github.com/OPTJoker/CocoaHttpServer