Tüm makaleler

Root olmadan tam bir ffmpeg

1 dk okumaNotlar

nitrateX Ajanlarla üretiyorum

Hiçbir şey kuramadığım bir makinede yazı katmanı, AAC ses ve H.264 video gerekiyordu. İşin çoğunu yine apt yaptı, sadece kurma kısmını değil.

Durum

Makinedeki tek ffmpeg, bir tarayıcı otomasyon aracıyla birlikte gelmişti. --disable-everything ile derlenmişti: tarayıcıyı WebM olarak kaydetmeye yetiyor, fazlası yok. drawtext yok, libx264 yok, ses kodlayıcı yok. sudo olmadığı için apt install ffmpeg de olmuyordu.

1. Adım: paket listesini apt'ye çıkarttırın

--print-uris, apt'nin indireceği her şeyi hiçbir şey kurmadan hesaplamasını sağlar. Bu hesap için root gerekmez.

apt-get install --reinstall -y --print-uris ffmpeg 2>&1 \
  | grep -oP "^'[^']+'" | tr -d "'" > uris.txt
wc -l uris.txt

Benim makinemde bu 106 paket çıktı. Zaten kurulu olan paketler listeye girmez. İstenen de bu, çünkü onlar sistemde var.

2. Adım: indirin ve açın

dpkg-deb -x yalnızca dosyaları çıkarır. Paket veritabanına dokunmadığı için onun için de root gerekmez.

mkdir pkgs sysroot
cd pkgs && wget -q -i ../uris.txt && cd ..
for f in pkgs/*.deb; do dpkg-deb -x "$f" sysroot/; done

3. Adım: yükleyiciyi klasöre yönlendirin

SYSROOT=$PWD/sysroot
LIB=$SYSROOT/usr/lib/x86_64-linux-gnu
export LD_LIBRARY_PATH=$LIB:$LIB/pulseaudio
$SYSROOT/usr/bin/ffmpeg -version

İkinci yol kolayca gözden kaçıyor. PulseAudio kütüphanelerinden biri pulseaudio/ alt klasörüne düşüyor ve ffmpeg o olmadan açılmıyor. O klasörü LD_LIBRARY_PATH'e eklemek sorunu çözüyor.

Ne elde ettiğinizi kontrol edin

$SYSROOT/usr/bin/ffmpeg -hide_banner -filters | grep drawtext
$SYSROOT/usr/bin/ffmpeg -hide_banner -encoders | grep -E 'libx264|aac'

İki satır da görünüyorsa tam sürüm elinizde.

Sınırlar

  • Paketler makineyle aynı dağıtım sürümünden gelmeli. Bu yüzden o makinenin kendi apt'sine sormak işe yarıyor.
  • Sisteme hiçbir şey kurulmuyor. Yeni bir makinede üç adımı tekrarlıyorsunuz, o yüzden bunları bir betikte tutun.

X'te paylaş

nitrateX Ajanlarla üretiyorum

Yeni makaleleri e-postayla alın

Yalnızca yeni bir makale çıktığında. Reklam yok. Ayrıntılar →