Windows平台摄像头或屏幕RTMP推送:OBS VS SmartPublisher
好多開發(fā)者問(wèn)道,既然有了OBS,你們?yōu)槭裁催€要開發(fā)SmartPublisher?
的確,在我們進(jìn)行Windows平臺(tái)RTMP推送模塊開發(fā)之前,市面上為數(shù)不多的Windows平臺(tái)RTMP推流工具當(dāng)屬OBS了,不得不說(shuō),OBS是一款很好用的直播軟件,它的優(yōu)勢(shì)在于,幾乎可以直播所有直播平臺(tái),不需要每個(gè)直播平臺(tái)都下載相關(guān)平臺(tái)的專用直播軟件,可以直播游戲,顯示器,word,瀏覽器等。
今天,我們以O(shè)BS和大牛直播SDK開發(fā)的SmartPublisher為例,就Windows平臺(tái)RTMP推流工具,做個(gè)簡(jiǎn)單的比較:
OBS介紹
OBS的優(yōu)勢(shì)在于,功能強(qiáng)大,幾乎所有你想要的場(chǎng)景它都有,現(xiàn)成的軟件,用起來(lái)很順手。當(dāng)然如果你是開發(fā)者,想基于OBS做二次開發(fā),實(shí)現(xiàn)二次產(chǎn)品化的化,難度比較大,OBS代碼量很大,駕馭起來(lái)難度很大,有bug的話,跟蹤起來(lái)很累。
鑒于外面的介紹亂七八糟,我們引用官方的:
What is OBS Studio?
OBS Studio is software designed for capturing, compositing, encoding, recording, and streaming video content, efficiently.
It's distributed under the GNU General Public License v2 (or any later version) - see the accompanying COPYING file for more details.
Quick Links
- Website:?https://obsproject.com
- Help/Documentation/Guides:?https://github.com/obsproject/obs-studio/wiki
- Forums:?https://obsproject.com/forum/
- Build Instructions:?https://github.com/obsproject/obs-studio/wiki/Install-Instructions
- Developer/API Documentation:?https://obsproject.com/docs
- Donating/backing/sponsoring:?https://obsproject.com/contribute
- Bug Tracker:?https://github.com/obsproject/obs-studio/issues
SmartPublisher
SmartPublisher是大牛直播SDK (Github)的RTMP推流SDK,跨平臺(tái),支持Windows、Android、iOS平臺(tái),特別針對(duì)如在線教育、會(huì)議同屏等傳統(tǒng)場(chǎng)景開發(fā),以SDK開發(fā)包的形式提供,功能強(qiáng)大,可擴(kuò)展性強(qiáng),如可支持錄像、快照、外部原始YUV/RGB數(shù)據(jù)接入,或編碼后數(shù)據(jù)集成等,集成難度較低,Windows平臺(tái)對(duì)外提供C++和C#接口,Android端提供JNI接口,iOS平臺(tái)提供Object C接口調(diào)用。
技術(shù)特點(diǎn)和優(yōu)勢(shì)
- 全自研框架,易于擴(kuò)展,自適應(yīng)算法讓延遲更低、采集編碼傳輸效率更高;
- 所有功能以SDK接口形式提供,所有狀態(tài),均有event回調(diào),完美支持?jǐn)嗑W(wǎng)自動(dòng)重連;
- SDK模塊化,可和大牛直播播放器SDK組合實(shí)現(xiàn)流媒體數(shù)據(jù)轉(zhuǎn)發(fā)、內(nèi)置輕量級(jí)RTSP服務(wù)、連麥、一對(duì)一互動(dòng)等場(chǎng)景;
- Windows推送端SDK以層級(jí)模式提供,開發(fā)者可以自行組合數(shù)據(jù)源(如多攝像頭/屏幕/水印疊加);
- 支持外部YUV/RGB/H.264/AAC/SPEEX/PCMA/PCMU數(shù)據(jù)源接入;
- 所有參數(shù)均可通過(guò)SDK接口單獨(dú)設(shè)置,亦可通過(guò)默認(rèn)參數(shù),傻瓜式設(shè)置;
- 推送、錄像、內(nèi)置輕量級(jí)RTSP服務(wù)模塊完全分離,可單獨(dú)使用亦可組合使用;
- 業(yè)內(nèi)甚至很難找到效果接近的SDK。
功能支持
如不單獨(dú)說(shuō)明,系Windows、Android、iOS全平臺(tái)支持。
- ?[視頻采集處理]Windows平臺(tái)涵蓋“Windows視頻采集處理SDK”功能;
- ?[音頻采集處理]Windows平臺(tái)涵蓋“Windows音頻采集處理SDK”功能;
- ?[本地預(yù)覽]Windows平臺(tái)支持?jǐn)z像頭/屏幕/合成數(shù)據(jù)實(shí)時(shí)預(yù)覽功能,Android/iOS平臺(tái)支持本地前后置攝像頭預(yù)覽;
- ?[攝像頭反轉(zhuǎn)/旋轉(zhuǎn)]Windows平臺(tái)支持?jǐn)z像頭水平反轉(zhuǎn)、垂直反轉(zhuǎn)、0°/90°/180°/270°旋轉(zhuǎn);
- ?[攝像頭采集]除常規(guī)YUV格式外,Windows平臺(tái)還支持MJPEG格式的攝像頭采集;
- ?[麥克風(fēng)/揚(yáng)聲器采集]Windows平臺(tái)音頻輸入端支持麥克風(fēng)、揚(yáng)聲器,或麥克風(fēng)和揚(yáng)聲器混音輸入;
- ?[RTMP推流]超低延時(shí)的RTMP協(xié)議直播推流SDK(Windows/Android/iOS支持RTMP擴(kuò)展H.265推送);
- ?[視頻格式]Windows/Android平臺(tái)支持H.264/H.265編碼(Android H.265硬編碼),iOS平臺(tái)支持H.264編碼;
- ?[音頻格式]Windows/Android/iOS平臺(tái)支持AAC編碼,Windows/Android平臺(tái)支持Speex編碼;
- ?[音頻編碼]Windows/Android平臺(tái)支持Speex推送、Speex編碼質(zhì)量設(shè)置;
- ?[音量調(diào)節(jié)]Windows/Android平臺(tái)采集端支持實(shí)時(shí)音量調(diào)節(jié)(其中,Windows平臺(tái)混音模式下支持單獨(dú)控制麥克風(fēng)、揚(yáng)聲器音量);
- ?[H.264硬編碼]Android/iOS平臺(tái)支持H.264硬編碼;
- ?[H.265硬編碼]Android/iOS平臺(tái)支持H.265硬編碼;
- ?[硬編碼自適應(yīng)]Android/iOS平臺(tái)支持硬編碼自適應(yīng),如檢測(cè)到硬編碼不支持,自動(dòng)切換到軟編(iOS如H.265硬編,先切換到H.264硬編碼,如不支持再嘗試H.264軟編);
- ?[軟硬編碼參數(shù)配置]支持gop間隔、幀率、bit-rate設(shè)置;
- ?[軟編碼參數(shù)配置]支持軟編碼profile、軟編碼速度、可變碼率設(shè)置;
- ?[多實(shí)例推送]支持多實(shí)例推送(如同時(shí)推送屏幕/攝像頭和外部數(shù)據(jù));
- ?[RTMP擴(kuò)展H.265]Windows/Android/iOS推送SDK支持RTMP擴(kuò)展H.265推送,Windows針對(duì)攝像頭采集軟編碼,使用H.265可變碼率,帶寬大幅節(jié)省,效果直逼傳統(tǒng)H.265編碼攝像頭,Android/iOS平臺(tái)支持H.265硬編碼;
- ?[橫豎屏推流]Android/iOS平臺(tái)支持支持橫屏、豎屏推流;
- ?[多分辨率支持]支持?jǐn)z像頭或屏幕多種分辨率設(shè)置;
- ?[Windows推屏]Windows平臺(tái)支持屏幕裁剪、窗口采集、屏幕/攝像頭數(shù)據(jù)合成等多種模式推送;
- ?[移動(dòng)端推屏]Android平臺(tái)支持后臺(tái)service推送屏幕(推送屏幕需要5.0+版本);
- ?[移動(dòng)端推屏]iOS平臺(tái)支持后臺(tái)推送屏幕(基于ReplayKit,需要iOS 10.0+版本);
- ?[事件回調(diào)]支持各種狀態(tài)實(shí)時(shí)回調(diào);
- ?[水印]Windows平臺(tái)支持文字水印、png水印、實(shí)時(shí)遮擋,Android平臺(tái)支持文字水印、png水印;
- ?[RTMP推送模式]支持RTMP推送 live|record模式設(shè)置(需服務(wù)器支持);
- ?[鏡像]Android/iOS平臺(tái)支持前置攝像頭實(shí)時(shí)鏡像功能;
- ?[前后攝像頭實(shí)時(shí)切換]Android/iOS平臺(tái)支持采集過(guò)程中,前后攝像頭切換;
- ?[復(fù)雜網(wǎng)絡(luò)處理]支持?jǐn)嗑W(wǎng)重連等各種網(wǎng)絡(luò)環(huán)境自動(dòng)適配;
- ?[動(dòng)態(tài)碼率]支持根據(jù)網(wǎng)絡(luò)情況自動(dòng)調(diào)整推流碼率;
- ?[實(shí)時(shí)靜音]支持推送過(guò)程中,實(shí)時(shí)靜音/取消靜音;
- ?[實(shí)時(shí)快照]支持推流過(guò)程中,實(shí)時(shí)快照;
- ?[純音頻推流]支持僅采集音頻流并發(fā)起推流功能;
- ?[純視頻推流]支持特殊場(chǎng)景下的純視頻推流功能;
- ?[降噪]Windows/Android平臺(tái)支持環(huán)境音、手機(jī)干擾等引起的噪音降噪處理、自動(dòng)增益、VAD檢測(cè);
- ?[回音消除]Android平臺(tái)支持實(shí)時(shí)傳遞遠(yuǎn)端PCM數(shù)據(jù),方便回音消除處理;
- ?[外部編碼前視頻數(shù)據(jù)對(duì)接]支持YUV數(shù)據(jù)對(duì)接;
- ?[外部編碼前音頻數(shù)據(jù)對(duì)接]支持PCM對(duì)接;
- ?[外部編碼后視頻數(shù)據(jù)對(duì)接]支持外部H.264數(shù)據(jù)對(duì)接;
- ?[外部編碼后音頻數(shù)據(jù)對(duì)接]外部AAC/PCMA/PCMU/SPEEX數(shù)據(jù)對(duì)接;
- ?[推送端休眠設(shè)置]Windows平臺(tái)支持休眠接口(設(shè)置成休眠模式后CPU會(huì)適當(dāng)降低);
- ?[編碼后數(shù)據(jù)輸出]Android平臺(tái)支持輸出編碼后的H264/AAC數(shù)據(jù)到上層,方便對(duì)接第三方平臺(tái)(如GB28181)對(duì)接;
- ?[擴(kuò)展錄像功能]完美支持和錄像SDK組合使用,錄像相關(guān)功能,可參見”Windows/Android/iOS錄像SDK“;
- ?[裁剪模式]Android/iOS平臺(tái)支持特定分辨率攝像頭裁剪模式設(shè)置;
- ?[服務(wù)器兼容]支持自建服務(wù)器(如Nginx、SRS)或CDN。
總結(jié)
通過(guò)以上介紹,大家可以看出,如果是互聯(lián)網(wǎng)級(jí)的,只是需要把屏幕或攝像頭數(shù)據(jù),推送到公網(wǎng)RTMP服務(wù)器或者CDN,對(duì)二次開發(fā)沒(méi)有太大要求的化,OBS是個(gè)不錯(cuò)的選擇,畢竟易用性好,功能強(qiáng)大。
如果是傳統(tǒng)行業(yè),比如智慧教室、會(huì)議同屏等,需要進(jìn)行二次開發(fā),對(duì)延遲、穩(wěn)定性要求很高的話,可以考慮用SmartPublisher這種基于接口定制的SDK,以此來(lái)降低開發(fā)周期,提高開發(fā)效率和產(chǎn)品穩(wěn)定性,騰出更多的精力進(jìn)行業(yè)務(wù)邏輯的開發(fā)。
總結(jié)
以上是生活随笔為你收集整理的Windows平台摄像头或屏幕RTMP推送:OBS VS SmartPublisher的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【深度学习】保姆级教程,用PyTorch
- 下一篇: win10系统进入监护人模式的方法