Khadas Docs

Amazing Khadas, always amazes you!

User Tools

Site Tools


Sidebar

products:sbc:vim4:applications:hardware-encoding

VIM4 Hardware Encoding

Introduction

This page introduces how to use hardware encoding on VIM4.

Only supoport Amlgoic 5.4/5.15 Kernel.

Encoding with Amlogic Library

H264 Hardware Encoding

VIM4

aml_enc_test 1080p.nv12 dump.h264 1920 1080 30 30 6000000 100 1 0 2 4

VIM3/3L

amvenc_test 1080p.nv12 dump.h264 1920 1080 30 30 6000000 100 1 0 2 4

The encoded file is dump.h264.

H265 Hardware Encoding

VIM4

aml_enc_test 1080p.nv12 dump.h265 1920 1080 30 30 6000000 100 1 0 2 5

VIM3/3L

amvenc_test 1080p.nv12 dump.h265 1920 1080 30 30 6000000 100 1 0 2 5

The encoded file is dump.h265.

JPEG Hardware Encoding

jpeg_enc_test 1080p.nv12 dump.jpg 1920 1080 100 3 0 8 8 0

The encoded file is dump.jpg.

Encoding with Gstreamer

Install Gstreamer Encoder Plugins

You need to install the gstreamer encoder plugins:

sudo apt update
sudo apt install gstreamer-aml

Check the gstreamer encoder plugins:

$ gst-inspect-1.0 | grep aml
amljpegenc:  amljpegenc: Amlogic JPEG image encoder
amlvenc:  amlvenc: Amlogic h264/h265 Multi-Encoder
  • amlvenc is the gstreamer hardware encoder plugin for H264/H265.
  • amljpegenc is the gstreamer hardware encoder plugin for jpeg.

H264 Hardware Encoding

Here is an example to decode H264 file to NV12 and then encode to H264.

Decoding & encoding:

gst-launch-1.0 filesrc location=/home/khadas/bbb_sunflower_1080p_60fps_normal.mp4 ! qtdemux name=d d.video_0 ! h264parse ! v4l2h264dec ! video/x-raw,format=NV12 ! amlvenc ! h264parse ! filesink location=/home/khadas/h264dec.h264

Another example to decode video from USB camera and encode to H264:

gst-launch-1.0 v4l2src device=/dev/video0 io-mode=mmap num-buffers=300 ! image/jpeg,width=1920,height=1080,framerate=30/1 ! jpegdec ! amlvenc ! h264parse ! filesink location=test_0.h264

H265 Hardware Encoding

Here is an example to decode H264 file to NV12 and then encode to H265.

Decoding & encoding:

gst-launch-1.0 filesrc location=/home/khadas/bbb_sunflower_1080p_60fps_normal.mp4 ! qtdemux name=d d.video_0 ! h264parse ! v4l2h264dec ! video/x-raw,format=NV12 ! amlvenc ! h265parse ! filesink location=/home/khadas/h264dec.h265

Another example to decode video from USB camera and encode to H265:

gst-launch-1.0 v4l2src device=/dev/video0 io-mode=mmap num-buffers=300 ! image/jpeg,width=1920,height=1080,framerate=30/1 ! jpegdec ! amlvenc ! h265parse ! filesink location=test_0.h265

JPEG Hardware Encoding

Read one frame YUY2 format data from USB camera and encode to jpeg file.

gst-launch-1.0 -v v4l2src device=/dev/video0 io-mode=mmap num-buffers=1 ! video/x-raw,format=YUY2,width=640,height=480 ! amljpegenc ! filesink location=1.jpg

Library Source Code

Last modified: 2024/04/21 21:36 by nick