【问题标题】:Gstreamer Extract frame from streamGstreamer 从流中提取帧
【发布时间】:2018-10-24 19:33:15
【问题描述】:

我正在尝试通过网络传输视频。目前我正在使用 gstreamer。但是,一旦它到达网络的另一端,我需要能够在框架中添加一些东西。

我想知道是否有一种方法可以从流中提取帧,对其进行修改,然后将其重新插入要显示的流中。如果它不能重新插入到蒸汽中,那么我可以使用不同的方法来显示帧,这是我真正需要弄清楚的提取。

帧操作将使用 python 完成,一旦我拥有正确的 gstreamer 命令,我将尝试在 pygst 中实现它。

发送视频的代码:

gst-launch-0.10 v4l2src device=/dev/video0 ! 'video/x-raw-yuv,width=640,height=480' !  x264enc pass=qual quantizer=20 tune=zerolatency ! rtph264pay ! udpsink host=127.0.0.1 port=1234

以及要接收的代码:

gst-launch-0.10 udpsrc port=1234 ! "application/x-rtp, payload=127" ! rtph264depay ! ffdec_h264 ! xvimagesink sync=false

任何帮助将不胜感激。

【问题讨论】:

    标签: video-streaming gstreamer


    【解决方案1】:

    你可以通过两种方式做到这一点

    1. 编写插件:必须熟悉 Gstreamer 库

    2. 使用 app src 和 app sink。 这将允许你做你想做的事。

    如果操作描述得更好,也许有一个 Gstreamer 插件会有所帮助?

    【讨论】:

    • 我试图在视频源上放置一个叠加层,同时让一些元素与源交互。例如,覆盖是一个鱼缸,如果屏幕上出现一个人的脸,那么我希望鱼游到他们的脸上。该程序被设计为位置之间的“虫洞”,所以如果两边都有人,那么我希望覆盖层淡出,以便人们可以通过虫洞交谈。
    • 如果你已经有一个组件,appsrc 和appsink 可以正常工作。这正是您定义的目的。有一个可以使用 alpha 混合的叠加插件,但可能无法满足您的要求。
    • 插件+1。如果要修改每一帧,则需要在管道中进行。看看例如示例的 geometrytransform 插件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-17
    相关资源
    最近更新 更多