首页 > 其他分享 >开源圆桌 Q&A 集锦

开源圆桌 Q&A 集锦

时间:2023-08-02 16:32:29浏览次数:29  
标签:https FFmpeg RTC 支持 SRS 开源 直播 集锦 圆桌


       谢       

Content Credit:杨成立、郭叶军、李忠、段维伟、陈诚

  懂的都懂

  不懂的...... 

→   

开源圆桌 Q&A 集锦_java

Many thanks to 杨成立

开源圆桌 Q&A 集锦_java_02

 陈诚——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!

标签:https,FFmpeg,RTC,支持,SRS,开源,直播,集锦,圆桌
From: https://blog.51cto.com/u_13530535/6939914

相关文章

  • 认识开源许可证——Apache2.0
    「七彩话合规」是棱镜七彩推出的全新内容板块,涵盖开源合规基础知识、常见许可证翻译、常见合规问答等多个模块。棱镜七彩开源合规部门专注于开源许可证研究,为您提供权威的许可证翻译参考和问题解答。开源合规第一步:理解开源许可证开源许可证,其本质是一种格式合同,通过特定的条款授予......
  • 基于C#的窗体阴影效果方案 - 开源研究系列文章
            最近在研究C#的Winform窗体的效果,上次介绍了窗体动画效果的博文(基于C#的无边框窗体动画效果的完美解决方案-开源研究系列文章),这次将窗体阴影效果的方案进行一个介绍。        找了一下度娘,具体窗体阴影效果就两种方法:直接绘制和使用双窗体。这里介......
  • 提升开源项目贡献者基数的5 种好方法
    许多自由和开源软件项目因解决问题而出现,人们开始为它们做贡献,是因为他们也想修复遇到的问题。当项目的最终用户发现它对他们的需求有用,该项目就开始增长。并且出于分享的目的把人们吸引到同一个项目社区。就像任何事物都是有寿命的,增长既是开源项目成功的标志,也是开源项目......
  • 开源流量检测引擎Dalton安装记录
    几个月之前照着官方文档安装过,一次性就成功,昨天重装了服务器再安装Dalton,怎么都安装不了一直报错ERROR:Service'agent-suricata-current'failedtobuild:Thecommand'/bin/sh-c./configure--enable-profiling${ENABLE_RUST}--enable-lua&&make-j$(nproc)&&make......
  • rest-apiV2.0.0升级为simplest-api开源框架生态之simplest-jpa发布
    什么是simplestsimplest追求存粹简单和极致。旨在为项目快速开发提供一系列的基础能力,方便用户根据项目需求快速进行功能拓展不在去关心一些繁琐。重复工作,而是把重点聚焦到业务。前言程序10年。作为一个多年程序。深知每个项目和程序,都有很多重复性工作要做。入行近10......
  • 外卖多门店小程序开源版开发
    外卖多门店小程序开源版开发外卖多门店小程序开源版的开发可以按照以下步骤进行:确定需求:明确外卖多门店小程序的功能和特点,包括用户注册登录、浏览菜单、下单支付、订单管理等。技术选型:选择适合开发小程序的技术框架,如微信小程序原生开发、uni-app、taro等。数据库设计:设计合适的......
  • 京东又开源一个新框架,用起来真优雅!
    DripTable是京东零售推出的一款用于企业级中后台的动态列表解决方案,项目基于React和JSONSchema,旨在通过简单配置快速生成页面动态列表来降低列表开发难度、提高工作效率。DripTable目前包含以下子项目:drip-table、drip-table-generator。各个子项目具体介绍如下:drip-tab......
  • 著名开源Linux图形驱动开发者与Valve签约
    据报道,Valve最近聘用了著名开源 Linux 图形驱动开发者AlyssaRosenzweig,以改进开源Linux图形驱动程序堆栈,增强Linux游戏生态系统。据报道,Valve最近聘用了著名开源Linux图形驱动开发者AlyssaRosenzweig,以改进开源Linux图形驱动程序堆栈,增强Linux游戏生态系......
  • 著名开源Linux图形驱动开发者与Valve签约
    据报道,Valve最近聘用了著名开源 Linux 图形驱动开发者AlyssaRosenzweig,以改进开源Linux图形驱动程序堆栈,增强Linux游戏生态系统。据报道,Valve最近聘用了著名开源Linux图形驱动开发者AlyssaRosenzweig,以改进开源Linux图形驱动程序堆栈,增强Linux游戏生态系......
  • miniframe开源Web框架(适配Delphi、lazarus)
    miniframe开源Web框架,一个使用pascal脚本编写业务代码的服务端框架。框架已实现了HTTP服务、脚本解释执行、多种数据库连接、数据库缓冲池、连接缓冲池等底层支持。在此基础上使用者只需要关注自己的业务实现即可。源码及demo下载 编译及运行环境配置 github地址技术qun:821855479......