前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >菜鸟手册9:Jetson gstreamer视频编码和解码

菜鸟手册9:Jetson gstreamer视频编码和解码

作者头像
GPUS Lady
发布于 2020-08-09 09:07:40
发布于 2020-08-09 09:07:40
17.3K0
举报
文章被收录于专栏:GPUS开发者GPUS开发者

还记得之前建议大家在NVIDIA Jetson产品上安装一个小工具么?答应我,NVIDIA Jetson这个小工具一定要装上!

没错,就是这个!

然后好几个用户就跑来问:Lady,为啥我的NVENC和NVDEC都是off的,难道我不配用硬件编解码么?

言外之意就是:

这里,我们借用这个开发者的文章,好好说道说道:


视频/成像和机器人技术是我感兴趣的主要领域,我经常希望/需要一个嵌入式平台来连续或按需从边缘设备传输视频。在其他情况下,您只需要在边缘设备上保存一些事件的记录,而不需要占用TB的存储空间。对于实时系统,视频传输的帧速率和延迟也很重要。通过最常用的媒介(以太网、无线局域网等)发送或存储未压缩的视频效果不佳;未压缩视频只需要大量带宽。

让我们举几个例子。

720p60(高清)视频:以每秒60帧的1280x720彩色视频为例。所需带宽=1280(宽度)x 720(高度)x 3(每像素颜色)x 8(每像素位数)x 60(帧/秒)=1.33 Gbps!!!

公共(有线)LAN连接(1Gb以太网)无法满足这一巨大的带宽需求。别想通过Wifi发送这个。还要记住,我们使用了一个简化的情况;由于开销(帧信号等),实际带宽消耗将更高。而且,大多数通信信道的实际带宽远低于大多数实际情况下的最大带宽。

我们甚至还没有达到全高清视频(剧透:彩色1080p60视频将需要超过3Gbps的带宽。每秒3G比特!!!)

这就是视频压缩的用武之地。这取决于您使用的压缩设置,但是要给出一个大致的数字,您可以期望带宽需求至少减少一个数量级。

例如,一个1080p30流可以以低于12Mbps的质量(H.264-base,高质量)进行流式传输。将其与未压缩视频的1.5Gbps相比,你就知道了!类似地,当压缩到H.264时,720p60流(前面讨论过)也可以以低于12Mbps的速率进行流式传输。对于H.265压缩,这些值进一步减小。

Nvidia Jetson的Gstreamer Pipeline(管道)

视频编码/解码是一个计算量很大的操作,最好使用专用的编码器/解码器硬件来完成。Nvidia Jetson设备配有内置的硬件编码器和解码器(分别称为NVENC和NVDEC),Jetpack附带gstreamer插件,以超简单的方式利用此功能。

在这篇文章中,我们将分享一些基本的gstreamer“管道”,让您开始(并兴奋)之后,您将有望进一步探索。我们不谈太多细节。

我已经尝试了以下使用Jetpack4.4和Nvidia Jetson NX设备,但这些应该可以在其他Jetson设备上正常工作。

准备工作

1.用Jetpack 4.4 刷机(以下省略500字)

2.安装Jetson-Stats (见文章顶部连接)

3.因为我要使用旧的usb-2网络摄像头作为源,所以我们将安装v4l-utils(视频用于Linux的实用程序)。要安装,只需在终端中键入以下内容

要查询v4l设备(将它们连接到您的Jetson的USB端口后),请使用以下命令

查询设备支持的格式(在这种情况下为video0)

或者,您可以简单地查询所有已连接的v4l设备

GSTREAMER管道

在gstreamer中,您构建“管道”来完成您的目标。把它想象成一系列的块,从源(测试源、摄像机等)开始,中间的任何处理块(格式转换、编码/解码等),以“sink”(屏幕显示、udp流地址、文件等)结束。

为了保持它的趣味性,我们将直接尝试一些简单的管道,从最简单的管道开始。

将视频测试源播放到屏幕:

从测试源开始总是个好主意

这将在屏幕上以30fps的速度显示1280x720的测试模式,如管道参数中指定的那样。

在屏幕上显示实时usb网络摄像头源:

这是最简单的gstreamer管道:

如果您的Jetson设备上连接了多个摄像头,可以按如下方式指定一个:

将测试模式视频编码为H264并保存到磁盘上的文件:

这里我们在末尾使用了filesink元素来指定保存到文件以及文件名。请注意,这将保存到您当前的工作目录中。通过在同一终端窗口中执行以下操作,可以查看当前的工作目录:

从文件读取、解码并在屏幕上显示:

现在我们可以读取之前保存的文件并在屏幕上显示内容

从网络摄像头对实时视频进行编码、解码和显示:

它可能看起来没什么用,但它可以用来查看仅仅通过编码和解码过程就为视频增加了多少延迟,而不受网络等因素的影响。

将网络摄像头视频编码为H.264并使用rtp(实时协议)流媒体:

这里有一个简单的管道来实现这一点

为了接收、解码和显示这个流,我们可以使用以下命令(在一个单独的终端中)

我们使用host=127.0.0.1流式传输到“localhost”(自己的机器)。要流式传输到另一台主机,您可以替换为该PC的IP地址。

从网络摄像头编码多个流:

你知道吗,Jetson视频编码器和解码器可以同时编码和解码多达4k的视频流,而不会消耗所有的CPU功率。为了演示和利用这一点,我们将构建一个gstreamer管道,以执行以下操作:

  • 使用我们的usb摄像头作为源
  • 使用“tee”元素制作我们的摄像机视频流的3个副本
  • 按原样显示第一个流(即,在任何压缩之前)
  • 使用H.264和流到端口5000对流的第二个副本进行编码
  • 使用H.265和流到端口5001对流的第三个副本进行编码

注意,在本例中,当我们转换到同一个设备(localhost/127.0.0.1)时,您也可以将其替换为网络上另一台计算机/jetson设备的IP。

现在,在另一个终端(或者在另一个设备上,如果您使用的IP不是127.0.0.1),我们可以使用以下方法接收、解码和显示H.264流

类似地,我们可以使用下面的管道对H.265流执行相同的操作

注意Jetson设备上编码器和解码器功能的完整列表:

这个时候你再看看Jetson-Stats这个小工具,是否就开始工作了?

其他信息/提示...

1您可以使用详细模式获取有关gstreamer管道执行的其他信息。只需将-v添加到管道中即可显示其他信息。例如,请注意以下管道中的-v参数。

2要深入了解gstreamer管道,请阅读这里的更多内容:

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/accelerated_gstreamer.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Jetson Nano与智能视频分析
Jetson Nano开发套件大小只有80x100mm,具有四个高速USB 3.0端口、MIPI CSI-2摄像机连接器、HDMI 2.0和DisplayPort 1.3、千兆以太网、M.2 Key-E模块、MicroSD卡插槽和40针GPIO头。Nano的接口和GPIO头可以与各种流行的外围设备、传感器相连。
GPUS Lady
2019/04/29
3.7K0
Jetson Nano与智能视频分析
Android平台轻量级RTSP服务之GStreamer还是SmartRtspServer
Android上启动一个轻量级RTSP服务,让Android终端像网络摄像头一样提供个外部可供RTSP拉流的服务,在内网小并发又不希望部署单独流媒体服务的场景下非常适用,在Android终端实现这样的流媒体服务,决定了,只能是轻量级的服务。可以通过集成第三方库或编写自定义的RTSP服务器代码来实现这一功能。
音视频牛哥
2024/09/08
8630
Android平台轻量级RTSP服务之GStreamer还是SmartRtspServer
NVIDIA Jetson结合AWS视频流播放服务
手机、监控摄像机、无人机、网络摄像头、行车记录仪甚至卫星都可以产生高强度、高质量的视频流。它们将在洪水和其他自然灾害之后调查财产、提高公共安全,让您知道您的孩子安然无恙、收集有助于识别和解决交通问题的数据等。至少可以说,处理大量的视频数据是具有挑战性的。流包含宝贵的实时数据,以在更合适的时间处理。在您获得原始数据后,其他的挑战就会出现,比如提取价值 – 深入探究内容、了解内容的含义并加快行动——这是下一个重要步骤。
GPUS Lady
2021/01/06
2.5K0
NVIDIA Jetson结合AWS视频流播放服务
如何利用Python在Jetson TX2上抓取和显示摄像头影像
本文转载自JK Jung的帖子:https://jkjung-avt.github.io/tx2-camera-with-python/如果有侵犯到贴主利益,请立刻跟我联系。 在本贴中,贴主“我”分享了如何使用python 代码(及 OpenCV)在Jetson TX2上抓取和显示摄像头影像,包括IP摄像头, USB 网络摄像头和Jetson板载摄像头.这个简单代码也同样可以在Jetson TX1上运行。 1 准备工作 需要在Jetson TX2上安装 GStreamer 支持的 python和
GPUS Lady
2018/04/02
2.7K0
如何利用Python在Jetson TX2上抓取和显示摄像头影像
音视频编码格式详解
音视频编码格式指的是将音频和视频数据进行压缩、编码和封装的技术,使其在数字通信、存储和传输中更加高效。音视频编码格式可以分为两个部分:编码标准和容器格式。
inthemostwantedsea
2023/04/13
3.6K1
音视频编码格式详解
HEVC流媒体服务器被过度炒作的5个原因
实时流传输/直播是一个复杂的过程,涉及多种不同的方法和格式。这些组件中之一是用于媒体文件编码和解码的编解码器。编解码器还定义了编解码器可用于执行流传输的工具的类型。
LiveVideoStack
2020/09/16
1.5K0
关于视频编码的一点点研究。
今天的文章更多的是一种研究,因为最近研究视频发现了很多有趣的东西如果不记录下来可真的太可惜了
云深无际
2022/06/27
8060
关于视频编码的一点点研究。
Jetson NANO 2GB:Utils 的 videoSource 工具
前两篇已经用 10 行 Python 代码展现了 Hello AI World 强大而且简便的物件检测识别能力,虽然大部分的人都将目光集中在了深度学习的三大推理识别(图像分类、物件检测、语义分割),但是在整个项目中,其实还有两个非常重要的功臣功能,那就是 videoSource() 与 videoOutput() 这两个专司输入与输出的接口。
GPUS Lady
2021/07/12
8230
​边缘计算架构如何融合视频编码与存储
NETINT是一家在高性能存储和视频编码领域拥有前沿技术的芯片设计公司,在上海、温哥华、多伦多三地设有研发中心,并且有将近一百名资深研发工程师。经过了四年的研发NETINT拥有了世界上第一款可计算存储架构的融合存储功能和视频编解码功能的SoC芯片,这款芯片正式通过了PCIe SIG的认证测试,是世界上第一款支持PCIe 4.0接口的高性能芯片,在这项技术上,NETINT要远超其它芯片公司。
LiveVideoStack
2019/10/25
1.7K0
​边缘计算架构如何融合视频编码与存储
NVIDIA NVENC编码器 OBS 指南
由 Gerardo Delgado Cabrera 发表于 2019年2月26日 | 直播指南串流
西里国际站
2023/08/23
5.8K0
NVIDIA NVENC编码器 OBS 指南
【参数配置教程】RTMP推流摄像头内参数都应该如何配置?
TSINGSEE青犀视频的RTMP推流摄像头受到了很多用户的认可,由于摄像头的配置与视频的清晰度及流畅度有着直接的关系,配置不匹配会导致视频的模糊或者卡顿,因此很多用户在使用的时候,对于摄像机内的配置参数仍有些迷茫,所以本文我们将统一描述相关的参数问题,结合具体的摄像机参数看一下如何实现设备接入。
TSINGSEE青犀视频
2021/05/17
1.9K0
如何在NVIDIA Jetson Orin NANO上搭建Web化操作界面
在jetson-inference项目中集成了一个全双工的WebRTC 服务器,同时具备输入与输出的功能,主要具备以下特性:
GPUS Lady
2023/07/08
6150
如何在NVIDIA Jetson Orin NANO上搭建Web化操作界面
一文掌握直播技术:实时音视频采集、编码、传输与播放
从游戏、教育、电商到娱乐,直播技术的应用场景无处不在。随着移动端的网速越来越快,直播技术的普及和发展将更加迅速。
陆业聪
2024/08/19
1K0
一文掌握直播技术:实时音视频采集、编码、传输与播放
NVIDIA推出微型AI小猛兽:Jetson Orin NANO开发套件
3月21日GTC大会,NVIDIA正式发布了Jetson Orin NANO开发套件。如果说Jetson AGX Orin开发套件价格过于昂贵,让很多开发者、创客、教育工作者望而却步,那么Jetson Orin NANO开发套件就绝对不要错过啦
GPUS Lady
2023/05/29
2.1K0
NVIDIA推出微型AI小猛兽:Jetson Orin NANO开发套件
C++与音视频处理:处理音频和视频数据的编码和解码
音视频处理在现代多媒体应用中起着重要的作用。C++是一种强大且广泛使用的编程语言,提供了许多用于处理音频和视频数据的库和工具。本文将介绍C++中常用的音频和视频编码解码技术,以及相关的库和工具。
大盘鸡拌面
2023/12/04
1.1K0
VP9与H.265的6个不同点
先来了解一下视频在互联网上传输需要经历哪些环节。它必须先使用麦克风和摄像机捕捉音频与视频。然后,原始数据必须压缩(编码)到编解码器中,通过互联网连接(使用传输协议)广播,发送到某种服务器端解决方案(server-side solution)(通常是CDN或一个基于云的集群(cloud-based cluster),如Red5 Pro),然后解压(解码),最终供用户观看视频。
LiveVideoStack
2020/09/24
2.6K0
音视频面试题集锦 2023.09(2)
H.264 是由国际标准组织机构(ISO)下属的运动图象专家组(MPEG)和国际电传视讯联盟远程通信标准化组织(ITU-T)开发的系列编码标准之一。
关键帧
2023/09/27
9170
音视频面试题集锦 2023.09(2)
如何用Java实现视频编码和解码的高效算法?
实现视频编码和解码的高效算法是一个复杂而庞大的领域,并且涉及到很多细节和技术。在Java中,我们可以利用一些库和工具来帮助我们实现视频编码和解码的功能。下面将介绍一些基本的概念和方法,以及一些常用的库和工具,以帮助您开始实现视频编码和解码的高效算法。
用户1289394
2024/04/15
2780
如何用Java实现视频编码和解码的高效算法?
【音视频扫盲】可分级视频编码
为什么要进行视频编码? 众所周知视频是一组连续的图像序列,由连续的帧构成,一帧即为一幅图像。由于人眼的视觉暂留效应,当帧序列以一定的速率播放时,我们看到的就是动作连续的视频。在视频采集的时候一般是以每秒25帧或30帧的频率进行采集,在视频信号数字化后数据量会变得非常大,现有的网络和存储设备无法直接存储原始的视频图像。而由于连续的帧之间相似性极高,为便于储存和传输,可对视频和图像进行编码压缩,以便去除空间、时间维度的冗余。现有的主流压缩视频算法有 H.264/AVC,H.265/HEVC,VP8,VP9,VV
用户1097444
2022/06/29
1.6K0
【音视频扫盲】可分级视频编码
RTSP摄像头、播放器为什么需要支持H.265?
好多开发者在做选RTSP播放器的时候,经常问我们的问题是,用H.264好还是H.265好?本文我们就H.264 和 H.265的主要区别和适用场景,做个大概的交流。
音视频牛哥
2024/11/25
2590
RTSP摄像头、播放器为什么需要支持H.265?
推荐阅读
相关推荐
Jetson Nano与智能视频分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档