This page introduces how to use hardware encoding on VIM4.
Only supoport Amlgoic 5.4 Kernel.
aml_enc_test 1080p.nv12 dump.h264 1920 1080 30 30 6000000 100 1 0 2 4
The encoded file is dump.h264
.
aml_enc_test 1080p.nv12 dump.h265 1920 1080 30 30 6000000 100 1 0 2 5
The encoded file is dump.h265
.
jpeg_enc_test 1080p.nv12 dump.jpg 1920 1080 100 3 0 16 16 0
The encoded file is dump.jpg
.
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
.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
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
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