[發(fā)明專利]一種視頻流傳輸方法和裝置有效
| 申請?zhí)枺?/td> | 201310711644.7 | 申請日: | 2013-12-20 |
| 公開(公告)號: | CN103731758A | 公開(公告)日: | 2014-04-16 |
| 發(fā)明(設計)人: | 渠光杰;杜乾鋮;馬建平 | 申請(專利權)人: | 北京歐邁特數字技術有限責任公司 |
| 主分類號: | H04N21/647 | 分類號: | H04N21/647;H04L29/12 |
| 代理公司: | 上海脫穎律師事務所 31259 | 代理人: | 脫穎 |
| 地址: | 100085 北京市海淀*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 視頻 流傳 方法 裝置 | ||
技術領域
本發(fā)明涉及智能網絡視頻監(jiān)控技術,尤其涉及一種視頻流傳輸方法和裝置。
背景技術
流媒體服務器的主要功能是以流式協議(RTP/UDP等)將視頻流傳輸到客戶端,供監(jiān)控員監(jiān)視觀看;或者發(fā)送到解碼器,供解碼器解碼使用。
由于UDP協議是一種不可靠、無連接的簡單傳輸協議,所以現有的視頻流都無法保證數據能準確可靠地到達目的地,無連接的UDP套接口在傳輸中所引發(fā)的任何異步錯誤,內核都無法返回給他們所在的進程。
在目前階段,為了保持視頻流兩端的穩(wěn)定性,如圖1所示,通常在客戶端與媒體轉發(fā)服務器之間存在視頻流傳輸時增加實時流的心跳保活機制。但是,由于解碼器的硬件資源有限且內置模塊不宜更改,解碼器很少能支持心跳?;顧C制。
在這種情況下,當解碼器或者客戶端出現崩潰現象的情況后,如圖2所示,在解碼器和客戶端重啟、重新請求視頻流時,解碼器或客戶端會同時收到來自于媒體轉發(fā)服務器的視頻流和來自于其他IP地址或端口的視頻流,使視頻出現花屏、視頻頻繁切換等現象。而且,即使解碼器和客戶端沒有重新請求視頻流,視頻流也會仍然繼續(xù)發(fā)送,占用網絡帶寬。
同時,在一個未連接的UDP套接口上調用sendto函數時,源自Berkeley的內核暫時連接該套接口,發(fā)送數據,然后斷開該連接。如果在一個未連接的UDP套接口上給兩個數據報調用sendto函數,內核就需要執(zhí)行下面六個步驟:1、連接套接口;2、輸出第一個數據報;3、斷開套接口;4、連接套接口;5、輸出第二個數據報;6、斷開套接口。由此,應用進程發(fā)送多個數據報時,會由于需要頻繁地連接套接口和斷開套接口而耗費UDP套接口的傳輸開銷,使得系統(tǒng)效率低下。
發(fā)明內容
為了解決上述技術問題,本發(fā)明提供一種視頻流傳輸方法和裝置,該方法和裝置可以用于媒體轉發(fā)服務端或客戶端,也可以在媒體轉發(fā)服務器端和客戶端同時使用。
根據本發(fā)明的第一方面,本發(fā)明提供一種視頻流傳輸方法,該方法用于媒體轉發(fā)服務器,包括如下步驟:
S11、初始化環(huán)境;
S12、創(chuàng)建UDP套接口;
S13、向所創(chuàng)建的套接口寫數據;
S14、在視頻轉發(fā)服務器中,內核檢查套接口寫數據是否寫入成功。如果寫入成功,則繼續(xù)執(zhí)行步驟S13,對套接口繼續(xù)寫數據。如果寫入不成功,則執(zhí)行步驟S15;
S15、設置一個閾值,檢查寫數據連續(xù)不成功的累計次數是否超過該閾值,如果檢查結果是未超過閾值,則繼續(xù)執(zhí)行步驟S13,對套接口繼續(xù)寫數據;如果檢查結果是超過閾值,則繼續(xù)執(zhí)行步驟S16;
S16、將這路視頻流的套接口關閉,不再發(fā)送視頻流。
優(yōu)選的,在步驟S14中,內核檢查套接口寫數據是否寫入成功是通過檢查是否存在立即可知的錯誤,如果不存在該錯誤,則數據寫入成功,如果存在該錯誤,則數據寫入不成功。
根據本發(fā)明的第二方面,本發(fā)明提供一種視頻流傳輸方法,該方法用于客戶端,包括如下步驟:
S21、初始化環(huán)境,創(chuàng)建UDP套接口;
S22、當尚未有視頻流到達客戶端的UDP套接口時,套接口處于阻塞狀態(tài);當有視頻流到達時,客戶端的接收進程從UDP套接口中接收數據,即讀取數據;
S23、客戶端的接收進程從所接收到的數據里解析出視頻流的源IP地址和端口號,并將UDP套接口和源IP地址和端口進行連接,同時將UDP套接口設置為非阻塞。此時該UDP套接口只接收來自該源的視頻流,來自其他IP地址和端口的視頻流將會被丟棄。
S24、客戶端的接收進程繼續(xù)對該UDP套接口讀取數據,檢查是否讀取成功,如果對套接口讀取數據成功,則數據接收成功;如果讀取不成功,則繼續(xù)執(zhí)行步驟S25;
S25、設置一個閾值,檢查數據讀取連續(xù)不成功的累計次數是否超過該閾值,如果檢查結果是超過閾值,則認為從該源發(fā)過來的流已結束,執(zhí)行步驟S26;如果檢查結果是未超過閾值,則執(zhí)行步驟S24,對套接口繼續(xù)讀數據;
S26、將這路視頻流的套接口關閉,執(zhí)行步驟S21,創(chuàng)建新的UDP套接口,等待新的視頻流。
優(yōu)選的,在步驟S24中,內核檢查套接口讀數據是否讀取成功是通過檢查是否存在立即可知的錯誤,如果不存在該錯誤,則數據讀取成功,如果存在該錯誤,則數據讀取不成功。
優(yōu)選的,所述立即可知的錯誤是由已連接的UDP套接口引發(fā)的異步錯誤。
優(yōu)選的,所述閾值的大小由現場的網絡環(huán)境實際情況和用戶的需求來定,閾值可以為0。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京歐邁特數字技術有限責任公司,未經北京歐邁特數字技術有限責任公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310711644.7/2.html,轉載請聲明來源鉆瓜專利網。





