a级片网址,www.一级毛片,日批国产,中文字幕日韩精品有码视频,黄色毛片免费网站,久久久精品午夜免费不卡,天堂福利视频

您當前的位置是:  首頁 > 新聞 > 國內 >
 首頁 > 新聞 > 國內 >

18個實時音視頻開發(fā)中會用到開源項目

2018-02-05 10:23:50   作者:   來源:CTI論壇   評論:0  點擊:


  實時音視頻的開發(fā)學習有很多可以參考的開源項目。一個實時音視頻應用共包括幾個環(huán)節(jié):采集、編碼、前后處理、傳輸、解碼、緩沖、渲染等很多環(huán)節(jié)。每一個細分環(huán)節(jié),還有更細分的技術模塊。比如,前后處理環(huán)節(jié)有美顏、濾鏡、回聲消除、噪聲抑制等,采集有麥克風陣列等,編解碼有VP8、VP9、H.264、H.265等。
  我們今天匯總了一些能幫助到正在學習或進行音視頻開發(fā)的實時音視頻開發(fā)者們的開源項目與幾個也在為開源社區(qū)貢獻力量的商業(yè)服務。這些項目分為幾類:音視頻編解碼類、視頻前后處理、服務端類等。
  音視頻編解碼類開源項目
  視頻編解碼的作用,就是在設備的攝像頭采集畫面和前處理后,將圖像進行壓縮,進行數(shù)字編碼,用于傳輸。編解碼器的優(yōu)劣基本在于:壓縮效率的高低,速度和功耗。
  目前,主流的視頻編碼器分為3個系列:VPx(VP8,VP9),H.26x(H.264,H.265),AVS(AVS1.0,AVS2.0)。VPx系列是由Google開源的視頻編解碼標準。在保證相同質量情況下,VP9相比VP8碼率減少約50%。H.26x系列在硬件支持上比較廣泛,H.265的編碼效率能比上一代提高了30-50%,但是復雜度和功耗會比上一代大很多,所以純軟件編碼實現(xiàn)的話有一定瓶頸,現(xiàn)有的技術下,還是需要依靠硬件編解碼為主。AVS是我國具備自主知識產權的第二代信源編碼標準,目前已經發(fā)展到第二代。
  WebRTC
  首先會用到的肯定是WebRTC,是一個支持網(wǎng)頁瀏覽器進行實時語音對話或視頻對話的開源項目。它提供了包括音視頻的采集、編解碼、網(wǎng)絡傳輸、顯示等功能。如果你想基于WebRTC開發(fā)實時音視頻應用,需要注意,由于WebRTC缺少服務端設計和部署方案,你還需要將WebRTC與Janus等服務端類開源項目結合即可。
  官網(wǎng)地址:https://webrtc.org/
  x264
  H.264是目前應用最廣的碼流標準。x264則是能夠產生符合H.264標準的碼流的編碼器,它可以將視頻流編碼為H.264、MPEG-4 AVC格式。它提供了命令行接口與API,前者被用于一些圖形用戶接口例如Straxrip、MeGUI,后者則被FFmpeg、Handbrake等調用。當然,既然有x264,就有對應HEVC/H.265的x265。
  官網(wǎng)地址:https://www.videolan.org/developers/x264.html
  FFmpeg
  FFmpeg大家應該不陌生,提供了編碼、解碼、轉換、封裝等功能,以及剪裁、縮放、色域等后期處理,支持幾乎目前所有音視頻編碼標準(由于格式眾多,我們就不一一列列舉了,可以在Wikipedia中找到)。
  同時,F(xiàn)Fmpeg還衍生出了libav項目,從中誕生了視頻解碼器LAV,許多播放軟件都可調用LAV進行解碼,并且LAV本身也支持利用顯卡進行視頻硬解。很多主流視頻播放器中都以FFmpeg作為內核播放器。不僅僅是視頻播放器,就連Chrome這類可以播放網(wǎng)頁視頻的瀏覽器也受益于FFmpeg。很多開發(fā)者也基于FFmpeg做過很多開發(fā)并開源出來,比如大神雷霄驊(代碼可見他的sourceforge)。
  官網(wǎng)地址:http://ffmpeg.org/
  ijkplayer
  在介紹ijkplayer之前,要先提到ffplay。ffplay是一個使用了FFmpeg和sdl庫的可移植的媒體播放器。ijkplay是Bilibili開源的基于ffplay.c實現(xiàn)的輕量級iOS/Android視頻播放器,API易于集成,且編譯配置可裁剪,利于控制安裝包大小。
  在編解碼方面,ijkplayer支持視頻軟解和硬解,可以在播放前配置,但在播放過程中則不能切換。iOS和Android上視頻硬解可分別使用大家熟悉的VideoToolbox和MediaCodec。但ijkplayer對音頻僅支持軟解。
  Github地址:https://github.com/Bilibili/ijkplayer
  JSMpeg
  JSMpeg是一個基于JavaScript的MPEG1視頻的解碼器。如果要做H5端的視頻直播,可以考慮使用JSMpeg在移動端進行解碼。在H5端做音視頻直播,可以使用JSMpeg進行視頻解碼,這也是最近比較火的H5抓娃娃的主流策略。
  Github地址:https://github.com/phoboslab/jsmpeg
  Opus音頻編碼器
  Opus是用C語言開發(fā)的一個高靈活度的音頻編碼器,針對ARM、x86有特殊優(yōu)化,fix-point實現(xiàn)。Opus在各方面都有著明顯優(yōu)勢。它同時支持語音與音樂的編碼,比特率為6k-510k。它融合了SILK編碼方法和CELT編碼方法。SILK原本被用于Skype中,基于語音信號的線性預測分析(LPC),對音樂支持并不好。而CELT盡管適用于全帶寬音頻,但對低比特率語音的編碼效率不高,所以兩者在Opus中形成了互補。
  Opus是“取代”了Speex。但是Speex中有的功能,Opus卻沒有,比如回聲消除。這個功能已經從編碼器中獨立出來。所以如果想實現(xiàn)好的回聲消除,可以配合WebRTC的AEC和AECM模塊做二次開發(fā)。
  官網(wǎng)地址:https://opus-codec.org/
  live555
  live555是一個C++流媒體開源項目,其中不僅包括了傳輸協(xié)議(SIP、RTP)、音視頻編碼器(H.264、MPEG4)等,還包括流媒體服務器的例子,是流媒體項目的首選,里面的傳輸模塊是非常值得視頻會議開發(fā)作為參考的。
  官網(wǎng)地址:http://www.live555.com/
  音視頻前后處理開源項目
  前后處理包含很多細分技術,應用正確的話,對視頻質量或多或少都有提升。不過每增加一個處理環(huán)節(jié),必然會增加運算量與延時,所以如何取舍,還要大家各自斟酌。
  Seetaface
  Seetaface是由中科院山世光老師開源的一套完整的人臉檢測,人臉對齊和人臉驗證方案。代碼基于C++實現(xiàn),開源協(xié)議為BSD-2,可供學術界和工業(yè)界免費使用。且不依賴于任何第三方的庫函數(shù),在使用對齊好的LFW圖片上,檢測對齊全部使用該開源軟件的情況下可達到97.1%。
  Github地址:https://github.com/seetaface/SeetaFaceEngine
  GPUImage
  現(xiàn)在在iOS端做美顏效果、加水印,基本都會采用GPUImage,它內置了125種渲染效果, 還支持腳本自定義。該項目實現(xiàn)了圖片濾鏡、攝像頭實時濾鏡。它優(yōu)勢在于處理效果是基于GPU實現(xiàn),相對于CPU處理性能更高。
  Github地址:https://github.com/BradLarson/GPUImage
  Open nsfw model
  Open nsfw model是雅虎開源項目,全名是Open Not suitable for work model,專門鑒別不適合工作時間瀏覽的圖片(言而言之就是小黃圖)。它是基于Caffe框架訓練的模型,用于音視頻后處理。不過,它還不能鑒別恐怖、血腥圖片。
  Github地址:https://github.com/yahoo/open_nsfw
  Soundtouch
  Soundtouch是一個開源的音頻處理框架,主要功能對音頻變速、變調,實現(xiàn)變聲的效果。同時,它也能對媒體流實時處理。采用32位浮點或者16位定點,支持單聲道或者雙聲道,采樣率范圍為8k - 48k。
  官網(wǎng)地址:http://www.surina.net/soundtouch/
  服務端類開源項目
  正如開始時我們所說,WebRTC缺少服務端的設計與部署,利用MCU、SFU實現(xiàn)多人聊天,提高傳輸質量,都需要開發(fā)者自己動手。而下面這些開源項目能夠幫到你。
  Jitsi
  Jitsi是開源的視頻會議系統(tǒng),可以實現(xiàn)在線視頻會議,文檔共享和即時消息的分享。它支持網(wǎng)絡視頻會議,使用SFU模式實現(xiàn)視頻路由器功能。開發(fā)語言是Java。它支持SIP帳號注冊電話呼叫。不僅支持單機本地安裝方式,還支持云平臺安裝。
  官網(wǎng)地址:https://jitsi.org/
  JsSIP
  JsSIP是基于WebRTC的JavaScript SIP協(xié)議實現(xiàn)的庫,可以在瀏覽器和Node.js中運行。它可以與 OverSIP、Kamailio、Asterisk、OfficeSIP等SIP Server一起運行。
  Github地址:https://github.com/versatica/JsSIP
  SRS
  SRS是一個采用MIT協(xié)議授權的國產的簡單的RTMP/HLS 直播服務器。最新版還支持FLV模式,同時具備了RTMP的實時性,以及HLS中屬于HTTP協(xié)議對各種網(wǎng)絡環(huán)境高度適應性,并且支持更多播放器。它的功能與nginx-rtmp-module類似, 可以實現(xiàn)RTMP/HLS的分發(fā)。
  Github地址:https://github.com/ossrs/srs
  JRTPLIB
  JRTPLIB 是一個開源的 RTP協(xié)議實現(xiàn)庫,支持Windows和unix平臺。它支持多線程,處理性能較好。它還支持RFC3550、UDP IPV6,支持自定義擴展傳輸協(xié)議。但它不支持TCP傳輸,這需要開發(fā)者自己來實現(xiàn)。同時,它也不支持音視頻的分包,代碼要你自己來實現(xiàn)。
  Github地址:https://github.com/j0r1/JRTPLIB
  OPAL
  OPAL是OpenH323的下一個版本,繼承了Openh323協(xié)議,其新包含了SIP協(xié)議棧,是實現(xiàn)SIP協(xié)議的首選,缺點是參考例子較少。
  代碼地址:http://sourceforge.net/projects/opalvoip/files/
  Kurento
  Kurento是一個基于WebRTC的媒體服務端,并包含了一系列API,可以簡化web與移動端實時視頻應用的開發(fā)。
  Github地址:https://github.com/Kurento
  Janus
  Janus是一個WebRTC媒體網(wǎng)關。不論是做流媒體、視頻會議、錄制、網(wǎng)關,都可以基于Janus來實現(xiàn)。
  Github地址:https://github.com/Kurento
  其它服務
  Callstats.io
  實時通信過程中的,延時、丟包、接通率、掉線率等質量問題,都影響用戶體驗。商用項目尤其需要關注。Callstats是一家通過對WebRTC呼叫進行專業(yè)監(jiān)測,來幫助用戶搜集通訊數(shù)據(jù),提升通話質量的服務商。
  Callstats也通過Github開放很多案例,可供使用Jitsi-videobridge,、turn-server、JsSIP的開發(fā)者參考。
  Github地址:https://github.com/callstats-io
  Meetecho
  Meetecho是著名的開源WebRTC網(wǎng)關項目Janus的開發(fā)者。他們還提供基于Janus開發(fā)的技術咨詢與部署服務、建立視頻會議直播與錄制服務等。
  Github地址:https://github.com/carlhuda/janus
  聲網(wǎng)Agora
  聲網(wǎng)提供了從編解碼到端到端傳輸?shù)娜追⻊眨_發(fā)者可以接入上文所述的音視頻前后處理的開源項目,配合使用聲網(wǎng)SDK可以建立高質量的實時音視頻應用。四行代碼,30分鐘即可讓完成集成。在Web端,Agora Web SDK可以幫助WebRTC開發(fā)者解決服務端傳輸中會遇到的卡頓、延時、回聲、多人視頻不穩(wěn)定等問題。
  同時,聲網(wǎng)在Github上也有70多個可供開發(fā)者參考、實踐的demo,覆蓋了從網(wǎng)頁端、iOS到Android平臺,以及音視頻直播、游戲連麥、企業(yè)會議、AR、直播答題、小程序等多種實時互動應用場景。
  官網(wǎng)地址:https://Agora.io
  Github地址:https://github.com/AgoraIO
  我們在這里列出了18個開源項目,以及3個能有效保證實時音視頻傳輸質量的服務。不過篇幅有限,還有很多開源項目我們沒有詳細列出,比如在音視頻方面,Xiph.org的Speex、FLAC,還有Xvid、libvpx、Lagarith、Daala、Thor等。
  不知道你還有哪些推薦呢?歡迎留言補充,新年福筒等你領,數(shù)量有限~
【免責聲明】本文僅代表作者本人觀點,與CTI論壇無關。CTI論壇對文中陳述、觀點判斷保持中立,不對所包含內容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。

專題

山东| 额敏县| 高阳县| 深泽县| 格尔木市| 镇康县| 绥棱县| 错那县| 五常市| 饶阳县| 马山县| 克拉玛依市| 江西省| 苏尼特右旗| 宁乡县| 凤冈县| 广河县| 冷水江市| 宿州市| 乌恰县| 同仁县| 德兴市| 克什克腾旗| 曲麻莱县| 柳江县| 瑞金市| 达拉特旗| 湖南省| 通道| 襄垣县| 高唐县| 嘉峪关市| 开鲁县| 抚顺县| 黑山县| 乌鲁木齐市| 平邑县| 芜湖市| 巴彦淖尔市| 巧家县| 堆龙德庆县|