首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VP8/VP9 RTP库

VP8/VP9 RTP库
EN

Stack Overflow用户
提问于 2013-07-07 16:36:21
回答 2查看 3K关注 0票数 1

是否有任何现有的库促进通过RTP传输VP8/VP9流?

我找到了VP8 (https://datatracker.ietf.org/doc/html/draft-ietf-payload-vp8-08)的RFC草案,但没有提到VP9编解码器(太新了吗?)。似乎libavformat实现了这个草案。还有人有别的选择吗?

EN

回答 2

Stack Overflow用户

发布于 2013-09-24 18:54:36

Mediastreamer2可以为您做到这一点。它用在支持VP8的Linphone中。

票数 3
EN

Stack Overflow用户

发布于 2017-02-18 10:34:56

从GStreamer 1.8.2 (可能更早,但1.8.2或更高版本会让您的工作更轻松)开始,这一切都可以使用GStreamer本身来完成。你应该忽略ffmpeg和libav (同样的东西-- project有一个分裂)交叉插拔。

你需要gstreamer的源代码,gst-plugins-base,gst-plugins-good和gst-plugins-bad,就是这样。不要使用gst-plugins-ffmpeg、libav等,所有这些建议在这一点上都已经过时了。(对于h.264/h.265,你可能仍然需要它,但那是另一堆乱七八糟的东西。)您还应该获得libvpx的源代码,最好是1.6.0版。从automake中构建这些项目,并熟悉它们。特别是GStreamer有非常干净的配置脚本;了解如何有效地使用它们。

但是,重要的是不要混用0.10系列和1.8.2系列的代码,因为VP8的RFC是同时批准的(就像Opus的RFC一样,如果你将其用于音频,我推荐),并且一些例如在SDP文件中使用的魔术字符串已经改变。

然而,您应该意识到,仍然有一些未解决的问题。

特别是,如果您使用SDP文件来驱动所有这些内容,请注意使用"sdpdemux“自动生成图形仍然有一些限制。首先,股票sdpdemux没有“等级”,因此不会自动处理类型"application/sdp“。您应该希望构建一个定制的应用程序来构建您的图形--这个过程有一点学习曲线。

你应该对插件的分支副本和调整持开放态度,因为这通常会增加很大的灵活性,但要注意,复制的插件需要进行大量的令牌名称更改,以避免与现有插件发生冲突,并且必须小心地确保插件仍然可以工作。

我建议您完全熟悉以下GStreamer组件:

vp8dec vp8enc vp8parse (注意:如下所示) matroskamux matroskademux队列rtpbin rtpjitterbuffer sdpdemux udpsink udpsrc videoconvert

至少一个现代音频编解码器的...and匹配材料(我推荐Opus,所以,"opusdec“和"opusenc")。

注意上面的"vp8parse“。这可以从"kotaku“项目中获得,您可能需要也可能不需要。如果您想要在粒度级别处理vp8视频--在其中跳过而不实际解码它,等等--您可能需要它。某些类型的非线性编辑应用程序肯定需要它。到了gst1.8.2,它还没有被合并到主线GStreamer代码库中。

作为一个保持理智的特殊观点,在不了解正在进入的内容的情况下,不要使用VORBIS通过RTP进行音频流。Vorbis和Theora使用“动态码本”--依赖于内容的压缩字典,随着被压缩材料的不同而变化。这意味着解码器需要知道编码器想出了什么作为码本,但你没有文件头,因为你是流媒体。有一些方法可以解决这个问题,但它们并不令人愉快。如果您继续尝试将其插入到SDP文件中,以便在远程端进行恢复,我建议您确定一种您可以容忍数量的低成本苏格兰威士忌。

还有其他一些需要警惕的陷阱。

如果您希望在硬件加速的嵌入式系统上解码,请不要使用任何“花哨”的压缩设置,除非您拥有非常完整的QA资源。并非所有技术上有效的流都可以在所有硬件加速解码器中解码。特别是,“弹性”选项非常诱人,非常有效,但会破坏IMX6目标上的加速解码。

如果没有非常重要的妥协,VP8编码就不能实时进行。可能需要一些时间才能认识到这些是什么以及它们是如何工作的。这超出了这个问题的范围,除非你很容易认为你的发射器坏了,因为你实际上只是没有足够快地把数据送到你的udpsinks。不要担心,这是可以做到的,但你需要做你的研究。首先查看libvpx的"deadline“选项。

最后,我强烈建议您查看RTP中VP8、RTP、VP8有效载荷的RFC,特别是RTCP (R-T-C-P,不是RTP,不是TCP),SDP,SDP中的VP8流。这些特定问题中的每一个都有几个RFC。确保你看到的是当前的版本,而不是草稿!已经有了一些非常重要的变化。

当您熟悉您的规范和工具时,您将认识到我现在将为您总结的三点:

  1. 你不能用gst-
  2. 做所有的事情,但是如果你可以,它可以节省大量的时间。
  3. 你可以用一个定制的应用程序做所有的事情,但是学习曲线很重要,开发时间也会很短。很多人编写官方的RFC,他们只测试了他们所写的材料的非常狭窄的用例,特别是在多媒体中。

祝好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17510511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档