Swift搭建本地http服務器,實現外部視頻即時播放


最近項目有個小需求,需要ios實現手機作為服務端,將內部視頻文件,在外面能夠直接訪問

結合網上的例子,實現如下:

1、基於CocoaHTTPServer實現

2、可用pod集成,也可直接拖動文件集成

 

pod集成:

1、新建項目,Podfile文件如下,執行install

pod 'CocoaHTTPServer'

 

2、直接拖文件

a、先下載文件CocoaHTTPServer,如下:

導入CocoaHTTPServer-master目錄下的Core文件夾

導入Vendor目錄下的CocoaAsyncSocketCocoaLumberjack文件夾

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM