查看: 109|回复: 2

如何简单使用Jetson上的硬件解码器?

[复制链接]

8

主题

42

帖子

162

积分

科员

Rank: 2

积分
162
发表于 2020-5-28 22:16:47 | 显示全部楼层 |阅读模式
如何简单使用Jetson上的硬件解码器?
回复

使用道具 举报

23

主题

36

帖子

382

积分

超级版主

Rank: 8Rank: 8

积分
382
发表于 2020-5-29 11:51:17 | 显示全部楼层
NVIDIA V4L2视频解码器说明和扩展。

视频解码器设备节点为

/dev/nvhost-nvdec

具体使用方法可参照:https://docs.nvidia.com/jetson/l4t-multimedia/group__V4L2Dec.html

回复

使用道具 举报

8

主题

42

帖子

162

积分

科员

Rank: 2

积分
162
 楼主| 发表于 2020-5-29 17:22:18 | 显示全部楼层
大米力 发表于 2020-5-29 11:51
NVIDIA V4L2视频解码器说明和扩展。

视频解码器设备节点为

验证平台:Jetson AGX Xavier + Jetpack 4.4 DP

在Jetson平台上使用硬件编码器一共有三种方式:
        1. 直接使用deepstream:这种方式可以非常便利的体验硬件编码器的性能。并且由于deepstream使用了zero copy的pipeline,所以是目前您可以获得的最高性能的一个参考。
        2. 使用multimedia API:为了方便开发者进行开发,NV提供了底层API来对编解码直接进行控制。因此可以参考下列文档,来进行开发。您同样可以享受到硬件编解码的性能。https://docs.nvidia.com/jetson/l4t-multimedia/group__V4L2Dec.html

但是,使用deepstream需要适配gstreamer的框架,使用multimedia API需要大量处理底层操作,非常复杂而且扯蛋。完全无法称为"简单"。对于初学者来说应该尽量回避。

我们这里建议的是第三种方式:
        3. 使用opencv和gstreamer结合的方式。
        即用如下gstream pipeline来使用在
  1. gst-launch-1.0 -v rtspsrc location=rtsp://<你的h.265地址> ! rtph265depay ! h265parse ! nvv4l2decoder ! m.sink_0 nvstreammux name=m batch-size=1 width=1280 height=720 ! nvvideoconvert ! nvdsosd ! nvegltransform ! nveglglessink
复制代码

如果你用的是h.264的码流,则请把其中的265改成264。

这样你无论是使用python还是C++的程序,都可以直接使用其中的gstreamer pipeline,用到你的代码里面。
比如,代码可以参考以下的python代码,但是可以把其中的pipeline给替换掉。
https://gist.github.com/jkjung-a ... da19f7bfa3cb7d2690e

这样,你就可以在不改变自己代码的基础上,使用硬件解码器了。

当然,即使使用了硬件解码器,你仍然会遇到诸如图像格式变换等原因带来的性能问题,你还可以进一步参考如下链接,来进一步改善代码。总比完全换一个框架要容易多了。
https://www.e-consystems.com/Art ... igh_performance.asp
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点我注册

本版积分规则


快速回复 返回顶部 返回列表