我正试图找到一种方法来使用 VP8 或 VP9 压缩视频,这是 Googles WebM project 的一部分使用 Gstreamer。
是否已经有可以处理 VP8 的模块?如果是这样,我能得到一些简单的例子来说明如何在通过 RTP 的广播/接收中使用它吗?
到目前为止,Gstreamer official documentation 上没有任何内容。 .他们有 Matroska 支持,但这似乎只是为了分离容器。
编辑 显然有办法
服务器:
gst-launch-0.10 -v v4l2src ! video/x-raw-yuv,width=640,height=480 ! vp8enc ! rtpvp8pay ! udpsink host=127.0.0.1 port=9001
客户:
gst-launch-0.10 udpsrc port=9001 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)VP8-DRAFT-IETF-01, payload=(int)96, ssrc=(uint)2990747501, clock-base=(uint)275641083, seqnum-base=(uint)34810" ! rtpvp8depay ! vp8dec ! ffmpegcolorspace ! Autovideosink
但是延迟比我预期的要高。
最佳答案
是的,已经支持 VP8.. VP9 缺少更多的 de/payloader(不是真的 - gst 1.8 添加支持 - 细节在底部)
它们包含在 vpx 模块中。 http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-plugins-plugin-vpx.html
VP8: http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-plugins-vp8enc.html
http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-plugins-vp8dec.html
检查 gst-inspect-1.0 vp8enc
如果你有它
对于 RTP,您可以使用 webmmux、rtpvp8depay、rtpvp8pay、vp8enc/dec 等。
但是,正如 Burak Arslan 所说,RTP 的 pay/depayloader 目前还没有准备好(甚至在我检查过的 1.6.1 中也没有)
对于示例 - 使用它发布一些管道,当它不工作时我们可以检查它:)
编辑
GStreamer 1.8发布时支持 VP9 - 添加了新元素 rtpvp9pay/rtpvp9depay
https://stackoverflow.com/questions/33306265/