【问题标题】:DeepStream python apps in custom application自定义应用程序中的 DeepStream python 应用程序
【发布时间】:2020-12-03 04:10:11
【问题描述】:

在这个link 中,我们可以访问 gstreamer 管道缓冲区并转换 numpy 数组中的帧缓冲区,我想知道,我怎样才能访问 GPU 内存中的帧缓冲区,然后在不转换的情况下输入我的自定义处理器帧到 numpy 数组中。

我们有两种使用 deepstream 解码器的解决方案(比 opencv+gstreamer 更有效的方式): 一种方法是我们需要编写处理的自定义元素并在 gstreamer 中注册,然后将自定义元素放入管道中,然后在帧缓冲区上进行处理。这种方式很好但需要编写和了解gstreamer编程。这种方式与深流相同。 第二种方法是我们只使用来自link 的解码帧,然后将这些帧传递给自定义处理器单元。对于这一部分,我有两个问题:

1- gstreamer的循环和asyncio编程循环一样吗?

2- 如您所知,如果我们在 pad prob 函数中添加额外的操作,这会导致性能下降,但我想知道,是否可以将帧放入 pad prob 函数中并loop.create_task(process(frame)) 喜欢异步吗?这导致我们在这里不等待执行处理。像这样:

def tiler_sink_pad_buffer_probe(pad,info,u_data):
    ....
    ### capture the frames in GPU buffer without converting into numpy
    loop.create_task(process(frame))
    ....
    return Gst.PadProbeReturn.OK

【问题讨论】:

    标签: deep-learning nvidia-jetson nvidia-jetson-nano jetson-xavier nvidia-deepstream


    【解决方案1】:
    1. 是的,Python 中的 gstreamer 循环是异步的

    2. 好吧,你可以像我一样这样做(通过创建全局变量来做坏事)

       ws = None
       loopIO = None
      
       def tiler_sink_pad_buffer_probe(pad,info,u_data):
           global ws
           global loopIO
           ....
           ### capture the frames in GPU buffer converting into numpy
      
           if ws and loopIO:
               _, jpeg_frame = cv2.imencode('.jpg', frame_image)
               str_pic = jpeg_frame.tobytes()
               asyncio.run_coroutine_threadsafe(ws.send(str_pic), loopIO)
           ....
           return Gst.PadProbeReturn.OK
      
       if __name__ == '__main__':
           start_server = websockets.serve(consumer_handler, 'localhost', 8765)
           loopIO = asyncio.get_event_loop()
           loopIO.run_until_complete(start_server)
           wst = threading.Thread(target=asyncio.get_event_loop().run_forever)
           wst.daemon = True
           wst.start()
           sys.exit(main(sys.argv))
      

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多