画廊网站模板,官网应用商店下载,兰溪市建设局网站 图片,北京html5网站建设前言
由于项目需要#xff0c;需要开发Jetson平台的硬件编解码#xff1b;
优化CPU带宽#xff0c;后续主要以介绍硬件编解码为主 1.Jetson各平台编解码性能说明
如下是拿了Jetson nano/tx2/Xavier等几个平台做对比#xff1b;
这里说明的编解码性能主要是对硬件来说的…前言
由于项目需要需要开发Jetson平台的硬件编解码
优化CPU带宽后续主要以介绍硬件编解码为主 1.Jetson各平台编解码性能说明
如下是拿了Jetson nano/tx2/Xavier等几个平台做对比
这里说明的编解码性能主要是对硬件来说的 2. 编解码实现说明 2.1 软件编解码
优点功能强大、实现容易工具强大
缺点 占用CPU很大
常用工具有如下 ffmpeg、gstreamer只做简单介绍 2.1.1 ffmpeg
FFMPEG是领先的多媒体框架提供了音视频的编码解码转码封装解封装流滤镜播放等功能。
它几乎支持所有的音视频格式不管是标准委员会社区还是公司设计的。
它是高度可移植跨平台的
可以在Linux, Mac OS X, Microsoft Windows, the BSDs, Solaris等系统上在
各种不同的编译环境机器架构配置下编译运行并通过测试。
FFmpeg 一共包含 8 个库
avcodec 编解码最重要的库
avformat 封装格式处理
avfilter 滤镜特效处理
avdevice 各种设备的输入输出
avutil 工具库
postproc 后加工
swresample 音频采样数据格式转换
swscale 视频像素数据格式转换 2.1.2 gstreamer
Gstreamer是一个支持WindowsLinuxAndroid iOS的跨平台的多媒体框架
应用程序可以通过管道Pipeline的方式将多媒体处理的各个步骤串联起来达到预期的效果。
每个步骤通过元素Element基于GObject对象系统通过插件plugins的方式实现方便了各项功能的扩展。 2.2 硬件编解码
优点 占用CPU很小, 功能实现更灵活
缺点 不通用需要调用平台相关API有些硬件方面的限制 2.2.1 Multimedia API
Multimedia API为那些不使用GStreamer等框架或利用自定义框架的开发人员提供了另一条应用程序开发路径。
Multimedia API是支持灵活的应用程序开发的低级API的集合。
这些低级API通过提供对底层硬件块的更好控制来实现灵活性。
多媒体API包括:
• libargus for imaging applications
• V4L2 API for encoding, decoding, scaling, and other media functions
• NVOSD for On-Screen display
• Buffer Utility for buffer allocation, management, and sharing, transform, composition, and blending
Example applications are provided to demonstrate:
• Video decode (dual decode support with NVDEC)
• Video encode (dual encode support with NVENC)
• Video decode and DRM based render
• Video convert
• Video decode with multi-channels
• Multivideo decode (decoding of multiple video streams in parallel)
• JPEG decode and JPEG encode
• Image/video processing with CUDA
• Camera JPEG capture and video record
• Camera capture and CUDA processing
• Multicamera capture with composition
• Object detection and classification with cuDNN
• TensorRT and OpenCV usage 2.2.2 Accelerated GStreamer
由于Jetson平台可支持GStreamer方面得加速
所以也可以达到降低CPU带宽的目的 2.2.2.1 Encode 示例
1Video Encode Examples Using gst-launch-1.0
Video Encode Using gst-omx
//H.264 Encode (NVIDIA Accelerated Encode)
gst-launch-1.0 videotestsrc ! \ video/x-raw, format(string)I420, width(int)640,
\ height(int)480 ! omxh264enc !
\ video/x-h264, stream-format(string)byte-stream ! h264parse !
\ qtmux ! filesink locationtest.mp4 -e //H.265 Encode (NVIDIA Accelerated Encode) g
st-launch-1.0 videotestsrc !
\ video/x-raw, format(string)I420, width(int)640,
\ height(int)480 ! omxh265enc ! filesink locationtest.h265 -e
Video Encode Using gst-v4l2
//H.264 Encode (NVIDIA Accelerated Encode)
gst-launch-1.0 nvarguscamerasrc !
\ video/x-raw(memory:NVMM), width(int)1920, height(int)1080,
\ format(string)NV12, framerate(fraction)30/1 ! nvv4l2h264enc !
\ bitrate8000000 ! h264parse ! qtmux ! filesink
\ locationfilename_h264.mp4 -e //H.265 Encode (NVIDIA Accelerated Encode)
gst-launch-1.0 nvarguscamerasrc !
\ video/x-raw(memory:NVMM), width(int)1920, height(int)1080,
\ format(string)NV12, framerate(fraction)30/1 ! nvv4l2h265enc
\ bitrate8000000 ! h265parse ! qtmux ! filesink \ locationfilename_h265.mp4 -e
2Image Encode Examples Using gst-launch-1.0
gst-launch-1.0 videotestsrc num-buffers1 !
\ video/x-raw, width(int)640, height(int)480,
\ format(string)I420 ! nvjpegenc ! filesink locationtest.jpg -e 2.2.2.2 Decode 示例
1Video Decode Examples Using gst-launch-1.0
Video Decode Using gst-omx
//H.264 Decode (NVIDIA Accelerated Decode)
gst-launch-1.0 filesrc locationfilename.mp4 !
\ qtdemux namedemux demux.video_0 ! queue ! h264parse ! omxh264dec !
\ nveglglessink -e //H.265 Decode (NVIDIA Accelerated Decode)
gst-launch-1.0 filesrc locationfilename.mp4 !
\ qtdemux namedemux demux.video_0 ! queue ! h265parse ! omxh265dec ! \ nvoverlaysink -e
Video Decode Using gst-v4l2
//H.264 Decode (NVIDIA Accelerated Decode)
gst-launch-1.0 filesrc locationfilename_h264.mp4 !
\ qtdemux ! queue ! h264parse ! nvv4l2decoder ! nv3dsink -e //H.265 Decode (NVIDIA Accelerated Decode)
gst-launch-1.0 filesrc locationfilename_h265.mp4 !
\ qtdemux ! queue ! h265parse ! nvv4l2decoder ! nv3dsink -e 2Image Decode Examples Using gst-launch-1.0
//JPEG Decode (NVIDIA Accelerated Decode) gst-launch-1.0 filesrc locationfilename.jpg ! nvjpegdec !
\ imagefreeze ! xvimagesink -e