Tein libmfx:n ohjeen mukaan, mutta edes esimerkkikomento ei toimi:
$ /usr/share/mfx/samples/sample_encode h264 -w 176 -h 144 -f 30 -b 3000 -i mot.mkv -o encoded_AUD_MW_E.264
sample_encode ei osaa purkaa MKV-tiedostoja, vaan hyväksyy vain raakamuotoista videota, oletuksena YUV420-väriavaruudessa. Muitakin väriavaruuksia on mahdollista käyttää, mutta olennaista on, että mikään monimutkaisempi säiliömuoto ei käy, vaan tiedoston täytyy olla raakavideota. Kokeile ohjeen ensimmäisen esimerkin mukaisesti:
export LIBVA_DRIVER_NAME=iHD
wget https://github.com/lu-zero/fate-samples/raw/master/h264-conformance/AUD_MW_E.264
/usr/share/mfx/samples/sample_decode h264 -i AUD_MW_E.264 -o AUD_MW_E.yuv -i420
/usr/share/mfx/samples/sample_encode h264 -w 176 -h 144 -f 30 -cqp -qpi 30 -qpp 30 -qpb 30 -qsv-ff -i AUD_MW_E.yuv -o encoded_AUD_MW_E.264
Voisit myös näyttää vainfon listauksen, niin katsotaan, että ajuri on kunnossa.
vainfo
Tarkka dokumentaatio Media SDK:n sample_encodesta on tässä dokumentissa:
https://github.com/Intel-Media-SDK/MediaSDK/blob/master/doc/samples/readme-encode_linux.mdJa ffmpeg väittää osaavansa qsv:n, mutta ei siltikään suostu toimimaan ohjeessa annetulla esimerkkikomennolla:
$ ffmpeg -init_hw_device qsv=hw -filter_hw_device hw -i mot.mkv -vf hwupload=extra_hw_frames=64,format=qsv -c:v h264_qsv -b:v 5M -maxrate 5M output.mp4
Olennaiset virheet:
[h264_qsv @ 0x55736f32cf40] Selected ratecontrol mode is unsupported
[h264_qsv @ 0x55736f32cf40] Low power mode is unsupported
Ilmeisesti low power mode ei nyt ole käytettävissä. Johtuu mahdollisesti siitä, ettei kernelin ajuri lataa oletuksena tarvittavaa HUC-firmwarea:
https://github.com/Intel-Media-SDK/MediaSDK/issues/2970#issuecomment-1205561199Tuolla suositellaan kytkemään low power mode pois käytöstä, mutta on myös mahdollista pakottaa kernelin ajuri lataamaan HUC-firmware.
Ratecontrol mode is unsupported -virhe saattaa johtua low power mode -virheestä tai päin vastoin. Kokeile seuraavaksi vivulla -low_power 0:
ffmpeg -init_hw_device qsv=hw -filter_hw_device hw -i mot.mkv -vf hwupload=extra_hw_frames=64,format=qsv -low_power 0 -c:v h264_qsv -b:v 5M -maxrate 5M output.mp4
Tässä pyydetään ffmpegiä käyttämään CBR-enkoodausta (vakiobitratea), koska maksimiksi oli asetettu sama 5M kuin keskimääräiseksi bitrateksi (-b:v 5M -maxrate 5M). Se voi myös aiheuttaa osaltaan ongelmia, joten CBR:n sijaan kannattaa kokeilla myös CQP-tilaa (-qscale:v 25):
ffmpeg -init_hw_device qsv=hw -filter_hw_device hw -i mot.mkv -vf hwupload=extra_hw_frames=64,format=qsv -low_power 0 -c:v h264_qsv -qscale:v 25 output.mp4
Jos herjaa taas low power modesta, lisää valitsin -low_power 0
Edit: Myös Ubuntu 22.04:n alkuperäisessä 5.15-sarjan kernelissä taitaa olla bugeja, jotka estävät QSV:n toiminnan osittain tai kokonaan. Varmista, että käytössä on vähintään kernelin versio 5.19 (joka on ollut saatavilla hwe-päivityksenä Ubuntu 22.04.2:n julkaisusta lähtien).
Katso:
https://www.reddit.com/r/jellyfin/comments/usiur9/ubuntu_2204_qsv_setup/Käytössä olevan kernelin version voi tarkistaa komennolla:
uname -r