GStreamer udpsrc适用于gst-launch但不适用于app(OSX)

时间:2016-03-21 15:30:07

标签: macos udp streaming gstreamer h.264

我使用gst-launch以这种方式使用GStreamer成功传输了我的网络摄像头图像:

SERVER

./gst-launch-1.0 -v -m autovideosrc ! video/x-raw,format=BGRA ! videoconvert ! queue ! x264enc pass=qual quantizer=20 tune=zerolatency ! rtph264pay ! udpsink host=XXX.XXX.XXX.XXX port=7480

客户端

./gst-launch-1.0 udpsrc port=7480 ! "application/x-rtp, payload=127" ! rtph264depay ! decodebin ! glimagesink

现在我尝试使用这个管道在我的应用程序中重现客户端(我没有发布代码,因为我在我的管道和元素周围做了一个Objective-C包装器):

  1. 带帽的udpsrc:"application/x-rtp,media=video,payload=127,encoding-name=H264"

  2. rtph264depay

  3. decodebin
  4. glimagesink(用于测试)或自定义应用程序(在拉模式下)将图像转换为CVPixelBufferRef(已测试:它适用于videotestsrc / uridecodebin等)。
  5. 即使管道的状态消息看起来很“正常”,它也不起作用。我在控制台中有关于SecTaskLoadEntitlements failed error=22的消息,但是在使用命令行时我也有这些消息 我问自己,我失踪了什么是gst-launch。我在基于udpsrc的管道上找不到任何关于web的例子。

    我的问题是:

    • 当我们推出gst-launch时,是否有人知道实际发生了什么?或者知道实际发生了什么?
    • 在使用udpsrc的代码中是否有一些工作流水线的例子?

    编辑

    这是我的管道的图像。正如你所看到的,GstDecodeBin元素不会创建一个src pad,因为它没有接收 - 或者正在处理 - 任何东西(我在udpsrc元素上设置'timeout'属性为10秒,抛出它)。 可能是OSX沙盒问题吗?

    现在我的管道看起来像这样:

    1. udpsrc
    2. 队列
    3. h264 depay
    4. 解码bin
    5. 视频转换器
    6. 大写过滤器
    7. appsink / glimagesink
    8. pipeline

      使用this问题中的方法测试,该应用确实在此端口上收到了一些内容。

1 个答案:

答案 0 :(得分:3)

找到为什么它没有收到任何内容: GstUdpSrc元素必须在 # Bridge test connection br-win-to-deb bridge_insecure true address 192.168.138.166:1883 cleansession false clientid br-win-deb start_type automatic notifications false try_private true # Forward di tutti i messaggi con topic GATEWAY su topic AZURE topic # out 2 GATEWAY/ AZURE/ persistence true persistence_file Messages.db persistence_location C:/temp/ max_queued_messages 36000000 autosave_interval 10 queue_qos0_messages true 中分配一个端口来收听,否则它将会

静默监听默认端口(5004)

现在一切正常。

为了获取信息,将环境变量GST_DEBUG设置为udpsrc:5有很多帮助。