开源圆桌 QA 集锦
? ? ? ?前排致謝? ? ???
Content Credit:楊成立、郭葉軍、李忠、段維偉、陳誠
??懂的都懂.?
??不懂的......?
→?→?→?
Many thanks to 楊成立
?陳誠——AV1 編解碼優化的更新?
比 2018 年 AV1 版本,提升了18% 壓縮效率,提升 1.5 倍速度,減少 50% 內存消耗。比 VP9 提升了 35%。
Google 的音視頻產品,已經使用了 AV1。WebRTC 也已經支持了 AV1。
針對移動端的解碼器 libgav1,比 libaom 提高 3 倍速度,降低了 55% 的內存消耗。
編碼技術:non-local temporal filter, multi-model ML,2pass 碼率控制。
/Q&A.
Q:能直接用在ffmpeg推流嗎?
陳誠:都集成在了 libaom,可以在 FFmpeg 中使用。
Q:用機器學習模型,普通機器的算力會不會不足?
陳誠:目前使用了比較簡單的模型,不會造成算力不足。
Q:請問feature怎么更好的提取呢?
陳誠:feature 是編碼過程里的有用信息,比如在塊劃分中,周圍塊的劃分情況,已經嘗試的劃分模塊的 rate distortion cost. 以及運動向量等。總的來說需要理解編碼的過程中哪些信息是關鍵信息,才能幫助機器學習的模型做出更好的決策。
Q:有硬件支持了嗎?
陳誠:AV1 已經有了硬件支持,包括手機端和電視端都有,并且在不斷擴充。更詳細的硬件的信息更新在 livevideostack 的網站中有 Google 其他同事的介紹。
Q:對視頻場景有要求嗎,還是所有場景都可以?
陳誠:所有場景都可以。我們的編碼器優化增益是通用的。
?段維偉-使用 Flutter 2.0 開發多平臺 VOIP/WebRTC 客戶端?
Android/iOS/macOS/Windows 通話都已經支持,PC 上還需要有些屏幕捕獲等需要完善。
API定義和原生的定義差不多,基本上和 JS 的 API 可以對應起來。
很多都基于 Flutter 在開發。SRS 的 WebRTC 直播是用的 flutter-webrtc,可以 AppStore 搜:SRS 直播。
flutter-sip 協議棧,可以和 SIP 設備對接,安防或會議領域。
/Q&A.
Q:支持 Windows 嗎?
段維偉:支持。有些 API 還沒有支持,估計 2 到 3 個月會比較完善。
Q:和原生 API 的差別大嗎?
段維偉:更接近 JS 的規范。
Q:Flutter-sip 是否是單獨的倉庫?
段維偉:獨立的倉庫,SIP 協議棧用的是 dart 實現的。
Q:會不會和各平臺原生對比性能上有差異?
段維偉:Flutter 底層使用 OpenGL 繪制 UI,性能幾乎和原生一樣,在正常編譯優化后可達 60 fps,Flutter 有完整的性能分析工具,可以分析出代碼中每幀消耗時長,以便開發者進行細致優化.
?楊成立-?SRS 直播連麥和 SFU?
Star超指數增長:未來會考慮如何和 tensorflow 對接,擴展 AI 的場景。
更新了 RTC SFU demo,包括一對一通話,直播連麥,多人通話等。
零聲學院更新了SRS免費入門課程,包括環境搭建,WebRTC推拉流等。
從一個Bug看SRS的技術態度:https://shimo.im/docs/5rk9dr8Kmmu6NZqx/read
srs-docker 全面支持靜態鏈接 SRT:https://shimo.im/docs/Wr3DVnZpXjI4rPkJ/read
SRS更新RTC性能和延遲數據:https://github.com/ossrs/srs/tree/4.0release#rtc-benchmark
SRS未來更新:
成立:SRS 4.0 進入 Bugfix+UTest+Regression 階段,然后是 alpha、beta、release。
連響:SRS 支持 OBS 推流,WHIP 協議,預計本周。
志宏:SRS 5.0 支持 RTC 級聯,預計六月份。
海博:每周解決一個 bug。
立新:RTC 轉 RTMP 優化。
/Q&A.
Q:和Janus、Mediasoup差別是什么?
楊成立:SRS 定位是視頻服務器,直播和 RTC 兩個互聯網場景。國內的音視頻業務跑得比較快,應用場景也很多,比如直播連麥吵架、低延遲直播、超大方會議等等,這些場景都是直播和RTC結合的場景,我們需要的不是直播和RTC分開的技術方案,而是結合起來解決業務問題的基礎方案。Janus 和Mediasoup 是 RTC 的 SFU,不支持直播。
Q:怎么做的性能分析,能否公開?可講一下出傳輸的方案與優化嗎?
楊成立:性能優化設計非常多的東西,是一個比較寬泛的話題,而且會有不斷新的優化話題,之前我們有一篇文章《SRS性能(CPU)、內存優化工具用法》,SRS 4.0 的優化可以看《性能優化:SRS為何能做到同類的三倍》,未來我們會分享更多的性能優化方法和總結。
Q:SRT級聯是否有意義?
楊成立:級聯是為了水平擴展。直播的水平擴展我們用的是RTMP,也就是Origin-Edge 集群。RTC 的水平擴展我們是用的 QUIC,也就是 Origin 之間的級聯。SRT 當然也是可以的,但我們選擇 QUIC 是因為未來 QUIC 不僅僅可以用在級聯,還可以用在和客戶端的接入傳輸。
?李忠-FFmpeg 開源項目的穩定性建設?
CodeReview:每個 Patch 都需要簽名,API 的改動討論要充分,每個 Patch要盡量少。
Fuzz test,FATE 單元測試和覆蓋率,valgrid 查內存泄漏。
明城墻的啟示:每塊磚都有簽名,就像每次代碼的提交。
/Q&A.
Q:ffmpeg的開發從哪里入手,怎么開始呢?
李忠:?首先可以先通讀下FFmpeg的官方網站(https://www.ffmpeg.org/), 上面有詳細的技術文檔(中文文檔可以參考大師兄的《FFmpeg從入門到精通》), 訂閱FFmpeg社區mail list(https://www.ffmpeg.org/contact.html#MailingLists), 在這個基礎上可以從兩方面的工作參與FFmpeg的代碼開發:
1. 閱讀和完善FFmpeg example代碼(https://github.com/FFmpeg/FFmpeg/tree/master/doc/examples)
2. 參與社區的一些Bug fix工作(https://trac.ffmpeg.org/)。之后就可以進行更復雜的功能和架構開發了。如果你恰好是在校學生,還可以參與FFmpeg GSOC(https://trac.ffmpeg.org/wiki/SponsoringPrograms/GSoC/2021)的項目開發, 會有眾多FFmpeg maintainer作為項目的mentor來手把手教學哦?:) 。
?郭葉軍-FFmpeg 中目標檢測和識別?
超分:支持 SRCNN 和 ESPCN 兩種模型,支持的 YUV 格式。
目標檢測 (dnn_detect) 和識別 (dnn_calssify):輸入視頻后,可以標識出目標。
/Q&A.
Q:目前支持的backend有哪些?
郭葉軍:?目前支持的 backend 有 TensorFlow、OpenVINO 和 Native,在ppt 的 high level design 頁有寫到。
Q:這個編解碼器有性能對比圖嗎?
郭葉軍:FFmpeg DNN 模塊主要是支持 filter 用,目前和編解碼器沒有直接關系,我這邊沒有編解碼器的性能對比圖。
Q:這個方案可以解決前端網絡的問題,可以講一下與OWT的區別嗎?
郭葉軍:?問題中的 OWT 是指之前 LVS 分享的? Open WebRTC Toolkitm 嗎?那是基于 GStreamer 以及 OpenVINO 構建的。這里的介紹是基于 FFmpeg,而不是 Gstreamer。這里不僅支持 OpenVINO,也支持 TensorFlow 等。
Q:目標識別會反饋優化編碼嗎?
郭葉軍:目前 FFmpeg upstream 中還沒有直接反饋到編碼。如果需要的話,可以自己再加個一個 filter,分析目標識別的結果,并且和編碼連接起來。可能更加簡單直觀的方法,是增加一個新的視頻分析 filter,基于深度學習模型,其輸出是當前視頻(當前場景)所屬的類別,比如運動類、卡通類、劇情類等,然后決定編碼策略,確定編碼參數,這樣,就可以直接和已有編碼器連接起來了。目標檢測是 FFmpeg upstream 中第一個基于深度學習模型的視頻分析 filter,在代碼完成后還經過了兩三個月的討論 review 才進去,10 來個 active maintainer 參與討論,將近 100 封郵件來往。所以,現在社區對這類功能已經比較了解了,新的 filter 更容易進去。歡迎各種 patch!
Decode the Week選取新鮮有趣的音視頻(技術/非技術)新聞與大家分享——也歡迎你通過后臺留言或郵件(contribute@livevideostack.com)與我們分(爆)享(料)圈內趣聞。
總結
以上是生活随笔為你收集整理的开源圆桌 QA 集锦的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多媒体技术PI 第三期—网络传输线上圆桌
- 下一篇: 【直播预告 | 今天10:30】多媒体技