Has anyone been able to get gstreamer installed on Vim3 or Vim4?

Some of the dependencies are not being meet and creating issues that seem be a dead end with ARM64.

Any suggestions to what works good for full screen .mp4 playback. Tried ffmpeg and it is choppy and some other issues even with NVMe drive.

Hello @foxsquirrel

For VIM4, gstreamer already installed by default. You can install the image online with oowow.

Check usage here: VIM4 Hardware Decoding [Khadas Docs]

1 Like

Thank you for the information.

It is broken

lastest image from 12/22

khadas@Khadas:~$ uname -a
Linux Khadas 5.4.180 #1.4 SMP PREEMPT Thu Dec 29 07:03:59 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux

khadas@Khadas:~$ 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
Setting pipeline to PAUSED ...
ERROR: from element /GstPipeline:pipeline0/GstFileSrc:filesrc0: Resource not found.
Additional debug info:
../plugins/elements/gstfilesrc.c(553): gst_file_src_start (): /GstPipeline:pipeline0/GstFileSrc:filesrc0:
No such file "/home/khadas/bbb_sunflower_1080p_60fps_normal.mp4"
ERROR: pipeline doesn't want to preroll.
ERROR: from element /GstPipeline:pipeline0/GstFileSrc:filesrc0: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure.
Additional debug info:
../libs/gst/base/gstbasesrc.c(3556): gst_base_src_start (): /GstPipeline:pipeline0/GstFileSrc:filesrc0:
Failed to start
ERROR: pipeline doesn't want to preroll.
ERROR: from element /GstPipeline:pipeline0/GstFileSrc:filesrc0: Resource not found.
Additional debug info:
../plugins/elements/gstfilesrc.c(553): gst_file_src_start (): /GstPipeline:pipeline0/GstFileSrc:filesrc0:
No such file "/home/khadas/bbb_sunflower_1080p_60fps_normal.mp4"
ERROR: pipeline doesn't want to preroll.
ERROR: from element /GstPipeline:pipeline0/GstFileSrc:filesrc0: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure.
Additional debug info:
../libs/gst/base/gstbasesrc.c(3556): gst_base_src_start (): /GstPipeline:pipeline0/GstFileSrc:filesrc0:
Failed to start
ERROR: pipeline doesn't want to preroll.
Failed to set pipeline to PAUSED.
Setting pipeline to NULL ...
Freeing pipeline ...
khadas@Khadas:~$ 

This is just an example, you don’t have video file bbb_sunflower_1080p_60fps_normal.mp4 in /home/khadas, please put the video file you want to decoding in /home/khadas and use the correct name.

Thank you for clarifying that, it looks like it is a demo, this might clear that up.

filesrc location=/home/khadas/<file-name>.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

@numbqq

Just tried it and it did not work for me.
This is an untouched fresh install, only addition has been ffmpeg and the test file.

khadas@Khadas:~$ gst-launch-1.0 filesrc location=/home/khadas/Videos/SD24-129.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
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...

(gst-launch-1.0:15874): GStreamer-CRITICAL **: 02:49:08.725: gst_value_collect_fraction: assertion 'collect_values[1].v_int != 0' failed

(gst-launch-1.0:15874): GStreamer-CRITICAL **: 02:49:08.725: passed '0' as denominator for `GstFraction'
Set log level to 4
[initEncParams:190] enc_feature_opts is 0x1 , GopPresetis 0x0 

[vdi_sys_sync_inst_param:675] [VDI] fail to deliver sync instance param inst_idx=0

[AML_MultiEncInitialize:1389] VPU instance param sync with open param failed

[SetSequenceInfo:990] Required buffer fb_num=3, src_num=1, actual src=3 1920x1080

Redistribute latency...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
Redistribute latency...
New clock: GstSystemClock
0:00:58.1 / 0:00:58.5 (99.2 %)
(gst-launch-1.0:15874): GStreamer-CRITICAL **: 02:49:23.265: gst_memory_resize: assertion 'size + mem->offset + offset <= mem->maxsize' failed
Got EOS from element "pipeline0".
Execution ended after 0:00:14.446067236
Setting pipeline to NULL ...
Freeing pipeline ...
khadas@Khadas:~$ 

The reference file is fine, it works with $ sudo ffplay

First of all, you need to understand what does this pipe line mean, this pipe line have done two things - mp4 file → NV12 raw format->H265 encode

  • Decode SD24-129.mp4 file to NV12 format
  • Encode NV12 format file to h265 format, file is h264dec.h265

Copy h264dec.h265 to your PC and play the encoded file h264dec.h265, if the video is the same with your reference file then it means work well.

Form the log, it seems work well.

1 Like

Did not realize that is all it did, assumed it would actually play the .mp4
I might not have been clear enough, need to build an application using gstreamer on the arm board. It has issues getting all the dependencies.