Khadas Docs

Amazing Khadas, always amazes you!

User Tools

Site Tools


Sidebar

products:sbc:vim4:applications:hardware-encoding

This is an old revision of the document!


VIM4 Hardware Encoding

Introduction

This page introduces how to use hardware encoding on VIM4.

Only supoport Amlgoic 5.4 Kernel.

Encoding with Amlogic Library

H264 Hardware Encoding

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

The encoded file is dump.h264.

H265 Hardware Encoding

aml_enc_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 16 16 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
amlvenc:  amlvenc: Amlogic h264/h265 Multi-Encoder

amlvenc is the gstreamer hardware encoder plugin for H264/H265.

H264 Hardware Encoding

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

As we also need to use the hardware decoder, so we need to setup parameters for it first.

echo 1 | sudo tee /sys/module/amvdec_ports/parameters/multiplanar
echo 1 | sudo tee /sys/module/amvdec_ports/parameters/bypass_vpp
echo 0 | sudo tee /sys/module/amvdec_ports/parameters/enable_drm_mode

Decoding & encoding:

gst-launch-1.0 filesrc location=/home/khadas/bbb_sunflower_1080p_60fps_normal.mp4 ! qtdemux name=d d.video_0 ! h264parse ! v4l2h264dec capture-io-mode=0 ! 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 H264.

As we also need to use the hardware decoder, so we need to setup parameters for it first.

echo 1 | sudo tee /sys/module/amvdec_ports/parameters/multiplanar
echo 1 | sudo tee /sys/module/amvdec_ports/parameters/bypass_vpp
echo 0 | sudo tee /sys/module/amvdec_ports/parameters/enable_drm_mode

Decoding & encoding:

gst-launch-1.0 filesrc location=/home/khadas/bbb_sunflower_1080p_60fps_normal.mp4 ! qtdemux name=d d.video_0 ! h264parse ! v4l2h264dec capture-io-mode=0 ! 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=1280,height=720 ! amljpegenc ! filesink location=1.jpg

Library Source Code

Last modified: 2022/12/27 05:11 by nick