# Rockchip MPP + FFmpeg su Orange Pi 5 Plus ### Guida alla configurazione di Rockchip MPP e FFmpeg-Rockchip su Orange Pi 5 Plus / RK3588, con test di: - decoding hardware HEVC con "hevc_rkmpp" - encoding hardware H.264 con "h264_rkmpp" - transcodifica HEVC → H.264 - output HLS - segmenti MPEG-TS - audio AAC - video verticale con rotazione presente nei metadata MP4 - verifica finale con "ffprobe" #### La configurazione riportata è quella verificata durante i test su Orange Pi 5 Plus. --- 1. Hardware e software Hardware utilizzato: Orange Pi 5 Plus Rockchip RK3588 ARM64 / aarch64 La libreria Rockchip MPP supporta la famiglia RK3588. Il progetto "ffmpeg-rockchip" è una fork di FFmpeg pensata per la pipeline hardware Rockchip MPP/RGA e include decoder ed encoder hardware. Il progetto è indirizzato in particolare a piattaforme RK3588/RK3588S. Repository: - MPP: https://github.com/rockchip-linux/mpp - FFmpeg-Rockchip: https://github.com/nyanmisaka/ffmpeg-rockchip - Wiki FFmpeg-Rockchip: https://github.com/nyanmisaka/ffmpeg-rockchip/wiki --- 2. Controllo iniziale del sistema Controllare l'architettura: ``` uname -m ``` Atteso: ``` aarch64 ``` Controllare il kernel: ``` uname -a ``` Controllare la distribuzione: ``` cat /etc/os-release ``` --- 3. Controllo dei device Rockchip Il supporto FFmpeg-Rockchip richiede che l'utente possa accedere ai device hardware Rockchip. Il progetto indica, tra gli altri: ``` /dev/dri /dev/dma_heap /dev/rga /dev/mpp_service ``` e, su alcune configurazioni/kernel: ``` /dev/iep /dev/mpp-service /dev/vpu_service /dev/vpu-service /dev/hevc_service /dev/hevc-service /dev/rkvdec /dev/rkvenc ``` Controllare: ``` ls -l /dev/mpp_service ``` e: ``` ls -l /dev | grep -Ei 'mpp|rga|rkv|vpu|iep' ``` Controllare anche: ``` ls -l /dev/dri ``` e: ``` ls -l /dev/dma_heap ``` --- 4. Permessi utente Aggiungere l'utente ai gruppi normalmente utilizzati per l'accesso ai device video: ``` sudo usermod -aG video "$USER" ``` Se sulla distribuzione sono presenti anche gruppi "render": ``` sudo usermod -aG render "$USER" ``` Controllare: groups Dopo la modifica è consigliato effettuare logout/login. --- 5. Pacchetti necessari Aggiornare il sistema: ``` sudo apt update sudo apt upgrade -y ``` Installare gli strumenti di compilazione: ``` sudo apt install -y \ git \ build-essential \ cmake \ pkg-config \ yasm \ nasm \ libdrm-dev \ libdrm2 \ libnuma-dev \ libssl-dev \ zlib1g-dev ``` Per una build FFmpeg più completa possono essere necessari altri pacchetti a seconda dei codec/librerie che si desidera abilitare. --- 6. Installazione Rockchip MPP 6.1 Directory sorgenti Creare: ``` sudo mkdir -p /usr/local/src sudo chown "$USER":"$USER" /usr/local/src ``` Entrare: ``` cd /usr/local/src ``` --- 6.2 Clonare MPP Repository ufficiale: ``` https://github.com/rockchip-linux/mpp ``` Clonare: ``` cd /usr/local/src git clone https://github.com/rockchip-linux/mpp.git rockchip-mpp ``` Entrare nella directory: ``` cd /usr/local/src/rockchip-mpp ``` Controllare il commit: ``` git rev-parse HEAD ``` È consigliato salvare il commit utilizzato, così una futura reinstallazione può essere riprodotta. MPP utilizza CMake e il progetto raccomanda una build out-of-source. --- 7. Compilazione MPP Creare la directory di build: ``` cd /usr/local/src/rockchip-mpp mkdir -p build cd build ``` Configurare: ``` cmake \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=ON \ -DBUILD_TEST=OFF \ -DCMAKE_INSTALL_PREFIX=/usr/local \ .. ``` Compilare: ``` make -j"$(nproc)" ``` Installare: ``` sudo make install ``` --- 8. Aggiornare il linker Aggiungere "/usr/local/lib" alla configurazione del linker: ``` echo '/usr/local/lib' | sudo tee /etc/ld.so.conf.d/local.conf ``` Aggiornare: ``` sudo ldconfig ``` Controllare: ``` ldconfig -p | grep -i mpp ``` Cercare anche direttamente: ``` find /usr/local -name 'librockchip_mpp.so*' -print ``` --- 9. Test della libreria MPP Controllare il device: ``` ls -l /dev/mpp_service ``` Controllare la libreria: ``` ldconfig -p | grep -i rockchip ``` Se la build di MPP ha installato gli strumenti di test, possono essere disponibili utility come: mpp_info_test mpp_buffer_test mpp_mem_test mpp_runtime_test mpp_platform_test La documentazione ufficiale MPP descrive questi strumenti per verificare libreria e ambiente hardware. Cercarli: ``` find /usr/local -type f -name 'mpp_*_test' -print ``` --- 10. Installazione FFmpeg-Rockchip Per la configurazione utilizzata nei test viene utilizzato: ffmpeg-rockchip Repository: ``` https://github.com/nyanmisaka/ffmpeg-rockchip ``` Il progetto fornisce supporto hardware MPP/RGA direttamente nella CLI FFmpeg. Entrare nella directory sorgenti: ``` cd /usr/local/src ``` Clonare: ``` git clone https://github.com/nyanmisaka/ffmpeg-rockchip.git ``` Entrare: ``` cd /usr/local/src/ffmpeg-rockchip ``` Controllare il commit: ``` git rev-parse HEAD ``` --- 11. Configurazione FFmpeg Prima di compilare verificare che MPP sia visibile a "pkg-config". ``` pkg-config --modversion rockchip_mpp ``` Se non viene trovato, cercare il file: ``` find /usr/local -name 'rockchip_mpp.pc' -print ``` Impostare eventualmente: ``` export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:$PKG_CONFIG_PATH ``` Riprovare: ``` pkg-config --modversion rockchip_mpp ``` --- 11.1 Configure Configurazione utilizzata: ``` ./configure \ --prefix=/usr/local \ --enable-gpl \ --enable-version3 \ --enable-libdrm \ --enable-rkmpp \ --enable-rkrga \ --enable-shared \ --disable-static \ --extra-cflags="-I/usr/local/include" \ --extra-ldflags="-L/usr/local/lib" ``` "ffmpeg-rockchip" include il supporto MPP e RGA e documenta le pipeline hardware per decoder, encoder e filtri. --- 12. Compilazione FFmpeg Compilare: ``` make -j"$(nproc)" ``` Installare: ``` sudo make install ``` Aggiornare il linker: ``` sudo ldconfig ``` --- 13. Verificare il binario FFmpeg Controllare: ``` which ffmpeg ``` Il binario che abbiamo utilizzato nei test è: ``` /usr/local/bin/ffmpeg ``` Controllare: ``` /usr/local/bin/ffmpeg -hide_banner -version ``` Controllare la configurazione: ``` /usr/local/bin/ffmpeg -hide_banner -buildconf ``` --- 14. Verificare i decoder RKMPP Eseguire: ``` /usr/local/bin/ffmpeg \ -hide_banner \ -decoders | grep -i rkmpp ``` Tra quelli importanti per il nostro test deve esserci: hevc_rkmpp Il progetto FFmpeg-Rockchip documenta esplicitamente "hevc_rkmpp" come decoder HEVC Rockchip MPP. Controllo diretto: ``` /usr/local/bin/ffmpeg \ -hide_banner \ -decoders | grep hevc_rkmpp ``` --- 15. Verificare gli encoder RKMPP Eseguire: ``` /usr/local/bin/ffmpeg \ -hide_banner \ -encoders | grep -i rkmpp ``` Controllare direttamente H.264: ``` /usr/local/bin/ffmpeg \ -hide_banner \ -encoders | grep h264_rkmpp ``` Deve essere disponibile: h264_rkmpp --- 16. Verificare i filtri RGA Se RGA è stato compilato: ``` /usr/local/bin/ffmpeg \ -hide_banner \ -filters | grep rkrga ``` Possibili filtri: scale_rkrga vpp_rkrga overlay_rkrga Il progetto documenta "scale_rkrga" per scaling/conversione formato e "vpp_rkrga" per operazioni come scaling, crop e transpose. --- 17. Primo test: decoder HEVC Prima di fare HLS conviene verificare il decoder. Esempio: ``` /usr/local/bin/ffmpeg \ -hide_banner \ -loglevel verbose \ -c:v hevc_rkmpp \ -i input.mp4 \ -f null - ``` Nel log deve comparire una sequenza simile: Created a RKMPP hardware device e: hevc_rkmpp --- 18. Test HEVC → H.264 Testare contemporaneamente decoder e encoder hardware: ``` /usr/local/bin/ffmpeg \ -hide_banner \ -loglevel verbose \ -y \ -c:v hevc_rkmpp \ -i input.mp4 \ -map 0:v:0 \ -c:v h264_rkmpp \ -rc_mode CBR \ -b:v 5000k \ -maxrate 6000k \ -bufsize 12000k \ -r 30 \ -g 90 \ -keyint_min 90 \ output.mp4 ``` Controllare: ``` /usr/local/bin/ffprobe \ -hide_banner \ output.mp4 ``` --- 19. Test con il video Xiaomi 13T Pro Il file utilizzato nei test: VID_20260221_095917.mp4 Directory: ``` cd /home/nvme/dockerdata/prove/s120js ``` Il file presenta: Video: HEVC 1920x1080 ~30 fps yuv420p e: Audio: AAC 48000 Hz stereo Controllare il video: ``` /usr/local/bin/ffprobe \ -hide_banner \ -select_streams v:0 \ -show_entries stream=codec_name,width,height,r_frame_rate,pix_fmt \ -of default=noprint_wrappers=1 \ VID_20260221_095917.mp4 ``` Controllare l'audio: ``` /usr/local/bin/ffprobe \ -hide_banner \ -select_streams a:0 \ -show_entries stream=codec_name,sample_rate,channels \ -of default=noprint_wrappers=1 \ VID_20260221_095917.mp4 ``` --- 20. Rotazione del video Xiaomi Il file contiene nei metadata: Display Matrix: rotation of -90.00 degrees Durante il test FFmpeg ha rilevato automaticamente la rotazione. Nel log è comparso: [transpose] w:1920 h:1080 dir:1 -> w:1080 h:1920 Quindi l'output corretto è: 1080x1920 Non è stato necessario aggiungere manualmente: -vf transpose=... Questo è importante. Per il file Xiaomi testato la pipeline ha quindi fatto: ``` Input: 1920x1080 HEVC rotation -90° ↓ hevc_rkmpp ↓ transpose automatico ↓ 1080x1920 ↓ h264_rkmpp ↓ HLS MPEG-TS ``` --- 21. Pipeline HLS funzionante Questa è la pipeline che abbiamo verificato con successo. Creare la directory: ``` rm -rf /tmp/hls_xiaomi mkdir -p /tmp/hls_xiaomi ``` Eseguire: ``` /usr/local/bin/ffmpeg \ -hide_banner \ -loglevel verbose \ -y \ -probesize 5000000 \ -analyzeduration 10000000 \ -c:v hevc_rkmpp \ -i VID_20260221_095917.mp4 \ -map 0:v:0 \ -map 0:a:0? \ -c:v h264_rkmpp \ -rc_mode CBR \ -b:v 5000k \ -maxrate 6000k \ -bufsize 12000k \ -r 30 \ -g 90 \ -keyint_min 90 \ -c:a aac \ -b:a 160k \ -ac 2 \ -ar 48000 \ -f hls \ -hls_time 3 \ -hls_list_size 0 \ -hls_playlist_type vod \ -hls_segment_type mpegts \ -hls_segment_filename '/tmp/hls_xiaomi/segment_%05d.ts' \ /tmp/hls_xiaomi/master.m3u8 ``` --- 22. Struttura corretta dell'output Dopo l'esecuzione: ``` ls -lh /tmp/hls_xiaomi ``` Atteso: ``` master.m3u8 segment_00000.ts segment_00001.ts ``` Nel test reale abbiamo ottenuto circa: ``` master.m3u8 183 bytes segment_00000.ts ~1.9 MB segment_00001.ts ~1.5 MB ``` --- 23. Playlist risultante Controllare: ``` cat /tmp/hls_xiaomi/master.m3u8 ``` Nel test è risultata: ``` #EXTM3U #EXT-X-VERSION:3 #EXT-X-TARGETDURATION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-PLAYLIST-TYPE:VOD #EXTINF:3.000000, segment_00000.ts #EXTINF:2.466667, segment_00001.ts #EXT-X-ENDLIST ``` La durata totale è circa: 5.47 secondi --- 24. Verifica HLS con ffprobe Eseguire: ``` /usr/local/bin/ffprobe \ -hide_banner \ /tmp/hls_xiaomi/master.m3u8 ``` Il risultato del test ha mostrato: ``` Video: h264 1080x1920 30 fps e: Audio: aac 48000 Hz stereo ``` Quindi: ``` HEVC input ↓ hevc_rkmpp ↓ h264_rkmpp ↓ HLS MPEG-TS ``` ha funzionato correttamente. --- 25. Perché usare "-hls_segment_filename" Questa opzione è importante: ``` -hls_segment_filename '/tmp/hls_xiaomi/segment_%05d.ts' ``` La playlist deve essere: ``` /tmp/hls_xiaomi/master.m3u8 ``` e i segmenti: ``` /tmp/hls_xiaomi/segment_00000.ts /tmp/hls_xiaomi/segment_00001.ts ``` La struttura corretta è: ``` /tmp/hls_xiaomi/ ├── master.m3u8 ├── segment_00000.ts └── segment_00001.ts ``` Non bisogna concatenare accidentalmente il pattern dei segmenti al nome della playlist. --- 26. Configurazione Node.js utilizzata dall'applicazione La funzione può essere strutturata così: ``` function buildFfmpegArgs(inputPath, jobDir, useRkmpp) { const master = path.join(jobDir, 'master.m3u8'); const segPattern = path.join(jobDir, 'segment_%05d.ts'); if (useRkmpp) { return [ '-hide_banner', '-loglevel', 'verbose', '-y', // Input probing '-probesize', '5000000', '-analyzeduration', '10000000', // Rockchip HEVC hardware decoder '-c:v', 'hevc_rkmpp', '-i', inputPath, // Streams '-map', '0:v:0', '-map', '0:a:0?', // Rockchip H.264 hardware encoder '-c:v', 'h264_rkmpp', '-rc_mode', 'CBR', '-b:v', '5000k', '-maxrate', '6000k', '-bufsize', '12000k', // Output framerate '-r', '30', // 90 frames = 3 seconds at 30 fps '-g', '90', '-keyint_min', '90', // Audio '-c:a', 'aac', '-b:a', '160k', '-ac', '2', '-ar', '48000', // HLS '-f', 'hls', '-hls_time', '3', '-hls_list_size', '0', '-hls_playlist_type', 'vod', '-hls_segment_type', 'mpegts', '-hls_segment_filename', segPattern, master ]; } } ``` Questa è la configurazione da mantenere come riferimento per la pipeline che abbiamo testato. --- 27. Significato delle opzioni video Decoder ``` -c:v hevc_rkmpp ``` Utilizza il decoder hardware Rockchip MPP per HEVC. --- Encoder ``` -c:v h264_rkmpp ``` Utilizza l'encoder hardware Rockchip MPP per H.264. Il progetto FFmpeg-Rockchip espone i codec MPP direttamente alla CLI FFmpeg. --- CBR ``` -rc_mode CBR ``` Target: ``` -b:v 5000k ``` Massimo: ``` -maxrate 6000k ``` Buffer: ``` -bufsize 12000k ``` Durante il test il log MPP ha confermato: ``` mode cbr bps [4687500:5000000:5312500] ``` --- 28. Framerate ``` -r 30 ``` L'output viene forzato a: ``` 30 fps ``` --- 29. GOP ``` -g 90 -keyint_min 90 ``` A 30 fps: 90 / 30 = 3 secondi Quindi il GOP è coerente con: ``` -hls_time 3 ``` Questo è particolarmente utile per una segmentazione HLS regolare. --- 30. Audio Configurazione: ``` -c:a aac -b:a 160k -ac 2 -ar 48000 ``` Output: ``` AAC 160 kbps stereo 48000 Hz ``` Il punto interrogativo: ``` -map 0:a:0? ``` rende l'audio opzionale. Se il file non contiene una traccia audio, FFmpeg continua comunque con il video. --- 31. HLS Configurazione: ``` -f hls -hls_time 3 -hls_list_size 0 -hls_playlist_type vod -hls_segment_type mpegts ``` Significato: ``` -hls_time 3 ``` segmenti di circa 3 secondi. ``` -hls_list_size 0 ``` mantiene tutti i segmenti nella playlist. ``` -hls_playlist_type vod ``` crea una playlist VOD. ``` -hls_segment_type mpegts ``` forza segmenti MPEG-TS. --- 32. Test completo automatico Dopo una reinstallazione è possibile eseguire questo controllo: ``` cd /home/nvme/dockerdata/prove/s120js rm -rf /tmp/hls_test mkdir -p /tmp/hls_test /usr/local/bin/ffmpeg \ -hide_banner \ -loglevel verbose \ -y \ -probesize 5000000 \ -analyzeduration 10000000 \ -c:v hevc_rkmpp \ -i VID_20260221_095917.mp4 \ -map 0:v:0 \ -map 0:a:0? \ -c:v h264_rkmpp \ -rc_mode CBR \ -b:v 5000k \ -maxrate 6000k \ -bufsize 12000k \ -r 30 \ -g 90 \ -keyint_min 90 \ -c:a aac \ -b:a 160k \ -ac 2 \ -ar 48000 \ -f hls \ -hls_time 3 \ -hls_list_size 0 \ -hls_playlist_type vod \ -hls_segment_type mpegts \ -hls_segment_filename '/tmp/hls_test/segment_%05d.ts' \ /tmp/hls_test/master.m3u8 ``` Controllare: echo "=== FILE ===" ``` ls -lh /tmp/hls_test echo echo "=== PLAYLIST ===" cat /tmp/hls_test/master.m3u8 echo echo "=== SEGMENTI ===" ls -lh /tmp/hls_test/segment_*.ts echo echo "=== PROBE ===" /usr/local/bin/ffprobe \ -hide_banner \ /tmp/hls_test/master.m3u8 ``` --- 33. Risultato considerato corretto Il test è da considerarsi riuscito se: ``` ffmpeg exit code = 0 ``` e vengono creati: ``` master.m3u8 segment_00000.ts segment_00001.ts ``` e "ffprobe" mostra: ``` Video: h264 ``` con: ``` 1080x1920 30 fps ``` e: ``` Audio: aac 48000 Hz stereo ``` Nel test reale il video è risultato senza artefatti. --- 34. Warning MPP osservati durante i test Durante la transcodifica sono comparsi alcuni messaggi MPP come: ``` mpp_platform: client 4 driver is not ready! mpp_platform: client 12 driver is not ready! ``` e: ``` mpp_buffer: check buffer found NULL pointer from get_packet_async ``` oltre a: ``` mpp_mem_pool: mpp_mem_pool_put_f invalid mem pool ptr ``` Questi messaggi non hanno impedito il funzionamento della pipeline testata. Nel test abbiamo infatti ottenuto: ``` Exiting with exit code 0 ``` e: ``` 164 frames decoded 0 decode errors ``` seguiti dalla corretta generazione dei segmenti HLS. Quindi non bisogna considerare automaticamente questi warning come un fallimento, ma bisogna sempre verificare: 1. exit code di FFmpeg 2. presenza dei segmenti 3. validità della playlist 4. output di "ffprobe" 5. qualità visiva del video --- 35. Errori da evitare 35.1 Usare un path HLS errato Non fare: ``` /tmp/hls_test/master.m3u8mp/hls_test/segment_... ``` Usare invece: ``` -hls_segment_filename '/tmp/hls_test/segment_%05d.ts' ``` e: ``` /tmp/hls_test/master.m3u8 ``` --- 35.2 Aggiungere inutilmente "-hwaccel rkmpp" La configurazione che abbiamo testato utilizza esplicitamente: ``` -c:v hevc_rkmpp ``` per il decoder. Quindi la configurazione applicativa non deve essere modificata aggiungendo: ``` -hwaccel rkmpp ``` solo perché si sta usando MPP. Il progetto "ffmpeg-rockchip" documenta anche pipeline basate su "-hwaccel rkmpp", ma quella è una modalità diversa dalla pipeline esplicitamente testata qui. --- 35.3 Aggiungere manualmente "transpose" Nel test Xiaomi FFmpeg ha già rilevato: Display Matrix: rotation of -90.00 degrees e ha applicato automaticamente: ``` 1920x1080 → 1080x1920 ``` Quindi non aggiungere: ``` -vf transpose=... ``` senza prima verificare il comportamento del file specifico. --- 36. Pipeline finale La configurazione verificata può essere riassunta così: ``` MP4 Xiaomi │ │ ▼ HEVC / H.265 1920x1080 ~30 fps │ ▼ hevc_rkmpp │ │ RK3588 hardware │ ▼ rotazione metadata │ ▼ 1080x1920 │ ▼ h264_rkmpp │ CBR 5000 kbps │ ▼ H.264 │ ┌──────────┴──────────┐ │ │ ▼ ▼ Video AAC H.264 160 kbps │ │ └──────────┬──────────┘ │ ▼ HLS │ ▼ MPEG-TS segments │ ┌──────────┴──────────┐ ▼ ▼ segment_00000.ts segment_00001.ts │ │ └──────────┬──────────┘ ▼ master.m3u8 ``` --- 37. Checklist finale Sistema ``` - [ ] "uname -m" → "aarch64" - [ ] RK3588 - [ ] "/dev/mpp_service" presente - [ ] "/dev/dri" presente - [ ] "/dev/dma_heap" presente - [ ] permessi utente corretti ``` MPP ``` - [ ] repository MPP compilato - [ ] "librockchip_mpp.so" installata - [ ] "ldconfig" aggiornato - [ ] eventuali test MPP funzionanti ``` FFmpeg ``` - [ ] "/usr/local/bin/ffmpeg" - [ ] "hevc_rkmpp" disponibile - [ ] "h264_rkmpp" disponibile - [ ] "rkrga" disponibile, se necessario ``` Transcoding ``` - [ ] HEVC hardware decode - [ ] H.264 hardware encode - [ ] CBR 5000k - [ ] 30 fps - [ ] GOP 90 - [ ] audio AAC 160k - [ ] 48 kHz stereo ``` HLS ``` - [ ] "master.m3u8" - [ ] "segment_00000.ts" - [ ] "segment_00001.ts" - [ ] playlist VOD - [ ] segmenti MPEG-TS - [ ] "ffprobe" legge correttamente HLS - [ ] nessun artefatto video ``` --- 38. Versioni da salvare per riproducibilità Quando la configurazione è funzionante, salvare le versioni: ``` echo "=== MPP ===" cd /usr/local/src/rockchip-mpp git rev-parse HEAD echo echo "=== FFmpeg Rockchip ===" cd /usr/local/src/ffmpeg-rockchip git rev-parse HEAD echo echo "=== FFmpeg ===" /usr/local/bin/ffmpeg -hide_banner -version | head -n 3 echo echo "=== Kernel ===" uname -a ``` È consigliato conservare questo output insieme alla guida. In caso di futura reinstallazione, sarà così possibile capire esattamente quale combinazione di: kernel MPP FFmpeg-Rockchip era stata utilizzata nella configurazione funzionante. --- 39. Riferimenti ufficiali Rockchip MPP Repository ufficiale: ``` https://github.com/rockchip-linux/mpp ``` Documentazione MPP: ``` https://github.com/rockchip-linux/mpp/blob/develop/doc/Rockchip_Developer_Guide_MPP_EN.md ``` MPP supporta RK3588 e fornisce API e librerie per encoding, decoding e processing hardware Rockchip. FFmpeg-Rockchip Repository: ``` https://github.com/nyanmisaka/ffmpeg-rockchip ``` Wiki: ``` https://github.com/nyanmisaka/ffmpeg-rockchip/wiki ``` Transcoding: ``` https://github.com/nyanmisaka/ffmpeg-rockchip/wiki/Video-Transcode ``` Il progetto documenta pipeline MPP decode + MPP encode e supporto ai decoder/encoder Rockchip. --- 40. Configurazione di riferimento La configurazione da considerare come baseline funzionante è: ``` SoC: RK3588 Decoder: hevc_rkmpp Encoder: h264_rkmpp Video: CBR 5000 kbps maxrate 6000 kbps bufsize 12000 kbps 30 fps GOP 90 Audio: AAC 160 kbps 48 kHz stereo HLS: 3 secondi VOD playlist completa MPEG-TS segment_%05d.ts ``` Questa è la configurazione utilizzata nei test che hanno prodotto HLS valido e video senza artefatti.