Bu komutlar AMD Radeon VAAPI donanım hızlandırması kullanarak videoyu H.264’e transcode eder. Radeon RX 7800 XT ile test edildi. Çoğu modern Radeon kartı H.264 donanımsal encode’u destekler; AV1’den farklı olarak RDNA3 ile sınırlı değildir.
Hız optimize komut
Kalite ve hız dengesi iyi olan hızlı H.264 encode istediğinde bunu kullan:
LIBVA_DRIVER_NAME=radeonsi ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -i input.mp4 -c:v h264_vaapi -rc_mode CQP -global_quality:v 24 -c:a copy output-h264.mp4input.mp4 ve output-h264.mp4‘ü kendi dosya adlarınla değiştir. Varsayılan render cihazı /dev/dri/renderD128; hangi cihazın Radeon kartına ait olduğundan emin değilsen bak: How to Identify Which /dev/dri/renderD Device Is Your AMD Radeon GPU.
Flag’ler ne yapar
LIBVA_DRIVER_NAME=radeonsiRadeon VAAPI sürücüsünü zorlar. Her dağıtımda gerekli olmayabilir ama birden fazla GPU sürücüsü kuruluysa yardımcı olur.-hwaccel vaapidonanım hızlandırmalı decode’u etkinleştirir.-hwaccel_device /dev/dri/renderD128FFmpeg’i varsayılan DRM render node’una yönlendirir.-hwaccel_output_format vaapidecode edilmiş frame’leri video belleğinde tutar; böylece encoder onları doğrudan okuyabilir.-c:v h264_vaapiH.264 VAAPI encoder’ını seçer.-rc_mode CQPsabit-quantizer (CQP) hız kontrolü kullanır.-global_quality:v 24encoder kalitesini ayarlar. Düşük = daha yüksek kalite ve büyük dosya; yüksek = daha küçük ve düşük kalite.-c:a copyaudio stream’ini yeniden encode etmeden kopyalar.
Wrapper script
Bunu transcode-h264-radeon.sh olarak kaydet ve giriş dosyasıyla çalıştır; girişin yanına otomatik olarak <basename>-h264.mp4 yazar:
#!/bin/bash
set -euo pipefail
RENDER_DEVICE="${RENDER_DEVICE:-/dev/dri/renderD128}"
if [ $# -ne 1 ]; then
echo "Usage: $0 <input video>" >&2
exit 1
fi
input="$1"
base="${input%.*}"
output="${base}-h264.mp4"
LIBVA_DRIVER_NAME=radeonsi ffmpeg \
-hwaccel vaapi -hwaccel_device "$RENDER_DEVICE" -hwaccel_output_format vaapi \
-i "$input" \
-c:v h264_vaapi -rc_mode CQP -global_quality:v 24 \
-c:a copy \
"$output"Örnek:
chmod +x transcode-h264-radeon.sh
./transcode-h264-radeon.sh input.mp4
# Produces input-h264.mp4Farklı bir render node kullanmak için export et:
RENDER_DEVICE=/dev/dri/renderD129 ./transcode-h264-radeon.sh input.mp4Kalite / bitrate rehberi
h264_vaapi için global_quality değeri kabaca H.264 CRF ölçeğine (0–51) eşdeğerdir. Bunlar yaklaşık eşleştirmelerdir; her zaman kendi kaynağınla test et:
| Target quality | CPU CRF (0–51) | h264_vaapi global_quality (0–51) | Typical 720p | Typical 1080p | Typical 4K | Typical 8K |
|---|---|---|---|---|---|---|
| High quality / near-transparent | 18 | 18 | ~4 – 6 Mbps | ~8 – 12 Mbps | ~40 – 60 Mbps | ~120 – 180 Mbps |
| Standard quality (recommended) | 23 | 23 | ~2 – 4 Mbps | ~4 – 8 Mbps | ~20 – 30 Mbps | ~60 – 90 Mbps |
| Moderate compression | 28 | 28 | ~1.5 – 3 Mbps | ~3 – 5 Mbps | ~12 – 20 Mbps | ~35 – 60 Mbps |
| Below standard quality | 35 | 35 | ~0.8 – 1.5 Mbps | ~1.5 – 3 Mbps | ~6 – 12 Mbps | ~18 – 35 Mbps |
| High compression / archival low | 40 | 40 | ~0.4 – 0.8 Mbps | ~0.8 – 1.5 Mbps | ~3 – 6 Mbps | ~9 – 18 Mbps |
Yukarıdaki komut varsayılan başlangıç noktası olarak 24 kullanır — tablodaki standart kalite (önerilen) ayarı. Gözlerine ve teslimat gereksinimlerine göre ayarla.
H.264 donanım encode’unun mevcut olduğunu doğrulama
vainfo‘nun ilgili kısmını kontrol et:
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSliceBu makinede vainfo AMD sürücüsünü şöyle raporlar:
vainfo: Driver version: Mesa Gallium driver 26.0.8-1ubuntu0.3 for AMD Radeon RX 7800 XT (radeonsi, navi32, ACO, DRM 3.64, 7.0.0-31-generic)Bu bilgisayarda doğrulama
Kısa bir 1920×1080 test clip’i üzerinde komutu çalıştırmak şu encode özetini üretti:
Output #0, mp4, to 'testsrc_h264.mp4':
Stream #0:0: Video: h264 (High) (avc1 / 0x31637661), vaapi(tv, progressive), 1920x1080, q=2-31, 30 fps
Stream #0:1: Audio: aac (LC), 44100 Hz, mono, fltp, 69 kb/s
[out#0/mp4] video:151KiB audio:43KiB ... bitrate= 330.4kbits/s speed=8.98xÇıktı üzerinde ffprobe, h264_vaapi ile doğru üretilmiş codec_name=h264 ve profile=High doğruladı.
Bu bilgisayarda /dev/dri/renderD128 entegre Intel GPU’suna ait olduğundan Radeon kart aslında /dev/dri/renderD129. Her zaman vainfo‘nun Radeon kartın olarak rapor ettiği cihazı kullan.
Bunun yerine Intel GPU kullanma
Aynı h264_vaapi codec’i iHD sürücüsüyle Intel VAAPI’de de çalışır. Ortam değişkenini değiştir ve doğru render node’u seç:
LIBVA_DRIVER_NAME=iHD ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format vaapi -i input.mp4 -c:v h264_vaapi -rc_mode CQP -global_quality:v 24 -c:a copy output-h264.mp4Donanımın için doğru cihazı bulmak üzere render-node identification post kullan.