日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

视频直播技术详解(2)采集

發布時間:2025/7/25 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 视频直播技术详解(2)采集 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文

http://mp.weixin.qq.com/s?__biz=MjM5NzAwNDI4Mg==&mid=2652191198&idx=1&sn=6d20bc90d19dcadaa479405c3b4fc46f#rd 主題?七牛?GPUImage

七牛云于 6 月底發布了一個針對視頻直播的實時流網絡 LiveNet 和完整的直播云解決方案,很多開發者對這個網絡和解決方案的細節和使用場景非常感興趣。

結合七牛實時流網絡 LiveNet 和直播云解決方案的實踐,我們將用八篇文章,更系統化地介紹當下大熱的視頻直播各環節的關鍵技術,幫助視頻直播創業者們更全面、深入地了解視頻直播技術,更好地技術選型。

本系列文章大綱如下:

(一)開篇

(二)采集

(三)處理

(四)編碼和封裝

(五)推流和傳輸

(六)現代播放器原理

(七)延遲優化

(八)SDK 性能測試模型

在上期?采集?中,?我們介紹了視頻采集針對音頻采?集和圖像采集以及它們分別對應兩種完全不同的輸入源和數據格式。 本篇是《解密視頻直播技術》系列之三:處理。我們將講解常見視頻處理功能如美顏、視頻水印、濾鏡、連麥等。

視頻或者音頻完成采集之后得到原始數據,為了增強一些現場效果或者加上一些額外的效果,我們一般會在將其編碼壓縮前進行處理,比如打上時間戳或者公司 Logo 的水印,祛斑美顏和聲音混淆等處理。在主播和觀眾連麥場景中,主播需要和某個或者多個觀眾進行對話,并將對話結果實時分享給其他所有觀眾,連麥的處理也有部分工作在推流端完成。

開放式設計?


如上圖所示,處理環節中分為音頻和視頻處理,音頻處理中具體包含混音、降噪和聲音特效等處理,視頻處理中包含美顏、水印、以及各種自定義濾鏡等處理。對于七牛這樣的直播云服務來說,為了滿足所有客戶的需求,除了要提供這些「標準」處理功能之外,我們還需要將該模塊設計成可自由接入自定義處理功能的方式。

iOS SDK 地址:?https://github.com/pili-engineering/PLMediaStreamingKit

Android SDK 地址:?https://github.com/pili-engineering/PLDroidMediaStreaming

常見視頻處理功能

1. 美顏?

都說「80% 的主播沒有美顏根本沒法看」,美顏是直播產品中最常見的功能之一。最近準備在香港上市的美圖公司的主打產品就是美顏相機和美拍,有媒體戲稱其會沖擊化妝品行業,其實就是美顏的效果的功勞,讓美女主播們不化妝也可以自信的直播,而美顏相機的用戶則可以拍出「更好的自己」。

美顏的主要原理是通過「磨皮+美白」來達到整體美顏的效果。磨皮的技術術語是「去噪」,也即對圖像中的噪點進行去除或者模糊化處理,常見的去噪算法有均值模糊、高斯模糊和中值濾波等。當然, 由于臉部的每個部位不盡相同,臉上的雀斑可能呈現出眼睛黑點的樣子,對整張圖像進行「去噪」處理的時候不需要將眼睛也去掉,因此這個環節中也涉及到人臉和皮膚檢測技術。

七牛直播云提供的 iOS 和 Android 推流 SDK 中內置了美顏功能,你可以根據自己的需要選擇開關美顏功能,并且能夠自由調節包括美顏,美白,紅潤等在內的參數。其中 iOS 端 SDK PLCameraStreamingKit 的參數設置如下:

1)按照默認參數開啟或關閉美顏:

  • -(void)setBeautifyModeOn:(BOOL)beautifyModeOn;

  • 2)設置美顏程度,范圍為 0 ~ 1:

  • -(void)setBeautify:(CGFloat)beautify;

  • 3)設置美白程度,范圍為 0 ~ 1

  • -(void)setWhiten:(CGFloat)whiten;

  • 4)設置紅潤程度,范圍為 0 ~ 1

  • -(void)setRedden:(CGFloat)redden;

  • 2. 視頻水印?

    水印是圖片和視頻內容中常見的功能之一,它可用于簡單是版權保護,或者進行廣告設置。處于監管的需求,國家相關部門也規定視頻直播過程中必須打上水印,同時直播的視頻必須錄制存儲下來保存一定的時間,并在錄制的視頻上打上水印。

    視頻水印包括播放器水印和視頻內嵌水印兩種方式可供選擇,對于播放器水印來說,如果沒有有效的防盜措施,對于沒有播放鑒權的推流,客戶端拿到直播流之后可以在任何一個不帶水印的播放器里面播放,因此也就失去了視頻保護的能力。綜合考慮云端錄制對于水印的需求,我們一般會選擇「視頻內嵌水印」的方式打水印。

    七牛直播云提供的 iOS 和 Android 推流 SDK 中也內置了水印功能,你可以根據自己的需要添加水印或移除水印,并且能夠自由設置水印的大小和位置。其中 iOS 端 SDK PLCameraStreamingKit 的參數設置如下:

    1)添加水印

  • -(void)setWaterMarkWithImage:(UIImage *)wateMarkImage position:(CGPoint)position;?

  • 該方法將為直播流添加一個水印,水印的大小由 wateMarkImage 的大小決定,位置由 position 決定,需要注意的是這些值都是以采集數據的像素點為單位的。例如我們使用AVCaptureSessionPreset1280x720 進行采集,同時 wateMarkImage.size 為 (100, 100) 對應的origin 為 (200, 300),那么水印的位置將在大小為 1280x720 的采集畫幅中位于 (200, 300) 的位置,大小為 (100, 100)。

    2)移除水印

  • -(void)clearWaterMark;

  • 3. 濾鏡?

    除了上面提到的美顏和水印之外,視頻中還有很多其它的處理效果也在這個環節完成。七牛直播云提供的 SDK 在開放性設計基礎之上,通過數據源回調接口,可以支持各種自定義濾鏡的接入。

    為了實現豐富的濾鏡效果,在 iOS 端可以考慮使用 GPUImage 這個庫,這是一個開源的基于GPU的圖片或視頻的處理框架,內置了多達120多種常見的濾鏡效果。有了它,添加實時的濾鏡只需要簡單地添加幾行代碼,還可以基于這個庫自己寫算法實現更豐富端效果。GPUImage 地址:?https://github.com/BradLarson/GPUImage

    除了 iOS 端之外,Android 也有 GPUImage 這個庫的移植:?https://github.com/CyberAgent/android-gpuimage

    同時,Google 官方也開源了一個偉大的庫,覆蓋了 Android 上面很多多媒體和圖形圖像相關的處理:?https://github.com/google/grafika

    4. 連麥


    連麥是互動直播中常見的需求,其流程如上圖所示。主播和部分觀眾之間可以進行實時互動,然后將互動結果實時播放給其他觀眾觀看。

    基于以上業務需求,我們很容易想到基于單向直播原理,在主播端和連麥觀眾端進行雙向推流和雙向播流的方式互動,然后在服務端將兩路推流合成一路推送給其他觀眾。但 RTMP 帶來的延遲決定了這種方式無法做到用戶可接受的互動直播。

    實際上,互動直播的主要技術難點在于:

    1)低延遲互動:保證主播和互動觀眾之間能夠實時互動,兩者之間就像電話溝通,因此必須保證兩者能在秒級以內聽到對方的聲音,看到對方的視頻;

    2)音畫同步:互動直播中對音畫同步的需求和單向直播中類似,只不過互動直播中的延遲要求更高,必須保證在音視頻秒級傳輸情況下的秒級同步。

    3)音視頻實時合成:其他觀眾需要實時觀看到對話結果,因此需要在客戶端或者服務端將畫面和聲音實時合成,然后以低成本高品質的方式傳輸觀眾端。

    在視頻和電話會議領域,目前比較成熟的方案是使用思科或者 WebEx 的方案,但這些商用的方案一不開源,二比較封閉,三成本比較高。對于互動人數比較少的互動直播,目前市場上比較成熟的方案是使用基于 WebRTC 的實時通訊方案。


    上圖是一個基于 WebRTC 協議實現多方實時通訊的示意圖,本地用戶(主播)和遠程用戶(連麥觀眾)之間的連接通過 RTCPeerConnection API 管理,這個 API 包裝了底層流管理和信令控制相關的細節。基于該方案可以輕松實現多人(14 人以下)的多方實時通信,如下圖所示:


    當然,在通信人數少的情況下,其復雜度相對簡單,如 2 人情況下。但人數增多至 4 人之后,其可選的網絡結構就增多了,如上圖所示,可以每個點之間形成自組織網絡的方式通信,也可以以 1 人為中心形成星型通信網絡,還可以讓大家都通過一個集中式的服務端進行通信。

    作為一個高性能、可伸縮的直播基礎服務提供商,七牛直播云經過評估選擇了以主播為中心形成星形通信網絡,支持主播和多個觀眾之間的互動質量。同時,為了保證合成后的音視頻實時傳輸到其他觀眾端,這里采用經過改造的 UDP 協議傳輸:

    1. 通過 UDP 降低傳輸延遲。

    2. 在 UDP 之上進行傳輸控制,保證用戶互動體驗 QoS。

    在下一篇連載中,我們將詳細介紹編碼和封裝,敬請期待!

    總結

    以上是生活随笔為你收集整理的视频直播技术详解(2)采集的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。