Podes pedirle a opencode que cambie los colores de la terminal.

Para activar el audio en fbff
[esotericwarfare@arch ~]$      sudo modprobe snd_pcm_oss

fbff en Arch Linux: Solución al error de compilación

Problema

Al intentar instalar fbff-git desde el AUR con yay, la compilación falla con este error:

ffs.c:93:17: error: implicit declaration of function 'avcodec_close'

Causa

El código de fbff usa la función avcodec_close(), que fue deprecada y eliminada en versiones recientes de FFmpeg. La función moderna es avcodec_free_context().

Solución

Opción 1: Instalar manualmente con parche

  1. Instalar dependencias:

    yay -S ffmpeg git base-devel
    
  2. Descargar el PKGBUILD y extraer:

    yay -G fbff-git
    cd fbff-git
    
  3. Editar el PKGBUILD y agregar el parche en la sección build():

    build(){
        cd "$srcdir/$pkgname"
        sed -i 's/avcodec_close(ffs->cc)/avcodec_free_context(\&ffs->cc)/' ffs.c
        make
    }
    
  4. Compilar e instalar:

    makepkg -si
    

Opción 2: Usar mpv (recomendado)

Si solo necesitás reproducir video en el framebuffer, mpv (del repositorio oficial) ya soporta DRM:

# Video con audio
mpv --vo=drm video.mkv

# Video sin audio
mpv --vo=drm --no-audio video.mkv

# Con aceleración de hardware (menos uso de CPU)
mpv --vo=drm --hwdec=auto video.mkv

Uso de fbff

Una vez instalado:

# Reproducir con sincronización básica
fbff -u -s video.mkv

# Silenciar audio (requiere /dev/dsp de OSS)
fbff -u -s -a - video.mkv

# Ajustar sincronización si el video es muy rápido
fbff -u -s100 -a - video.mkv

Notas

  • fbff decodifica en CPU puro
  • mpv --vo=drm soporta aceleración de hardware (VA-API, VDPAU)
  • El proyecto fbff está abandonado, puede tener más problemas de compatibilidad con FFmpeg futuro

fbff en Arch Linux: Solución completa al error de compilación

El Problema

Al intentar instalar fbff-git desde el AUR con yay:

yay -S fbff-git

La compilación fallaba con este error:

ffs.c:93:17: error: implicit declaration of function 'avcodec_close'
      ^~~~~~~~~~~~~
make: *** [Makefile:9: ffs.o] Error 1

Diagnóstico

El error indica que la función avcodec_close() no existe. Esto es porque:

  1. FFmpeg actualizó su API - La función avcodec_close() fue deprecada en 2014 y eliminada en versiones recientes de FFmpeg.

  2. La función moderna es avcodec_free_context() - Esta es la forma correcta de liberar un contexto de codec.

Solución Paso a Paso

Paso 1: Descargar el PKGBUILD

yay -G fbff-git
cd fbff-git

Esto descarga el PKGBUILD pero no compila.

Paso 2: Editar el PKGBUILD

nano PKGBUILD

Buscar la sección build() y modificarla:

Antes:

build(){
    cd "$srcdir/$pkgname"
    make
}

Después:

build(){
    cd "$srcdir/$pkgname"
    sed -i 's/avcodec_close(ffs->cc)/avcodec_free_context(\&ffs->cc)/' ffs.c
    make
}

Paso 3: Compilar e instalar

makepkg -si

O si ya tenés el paquete en el cache:

makepkg
sudo pacman -U fbff-git-*.pkg.tar.zst --noconfirm

Explicación del parche

El comando sed hace lo siguiente:

s/avcodec_close(ffs->cc)/avcodec_free_context(\&ffs->cc)/
Original Reemplazo
avcodec_close(ffs->cc) avcodec_free_context(&ffs->cc)

¿Por qué \\&? En sed, & significa “todo lo que matcheaste”. Para escribir literalmente & en el reemplazo, hay que escaparlo como \&.

El archivo ffs.c modificado

El cambio ocurre en la función ffs_free():

Antes (línea 93):

if (ffs->cc)
    avcodec_close(ffs->cc);

Después:

if (ffs->cc)
    avcodec_free_context(&ffs->cc);

Solución alternativa: Modificar el código fuente directamente

En lugar de modificar el PKGBUILD, podés clonar el repo, parchearlo, y compilar manualmente:

# Clonar el repo
git clone https://repo.or.cz/fbff.git
cd fbff

# Aplicar el parche
sed -i 's/avcodec_close(ffs->cc)/avcodec_free_context(\&ffs->cc)/' ffs.c

# Compilar
make

# Instalar
sudo cp fbff /usr/local/bin/

Verificar la instalación

fbff --help

Debería mostrar:

usage: fbff [options] file

Uso básico

# Reproducir video
fbff video.mkv

# Con sincronización
fbff -u -s video.mkv

# Solo audio
fbff -v - video.mkv

# Escalar a 50%
fbff -z 0.5 video.mkv

# Posicionar en pantalla
fbff -x 100 -y 50 video.mkv

Nota importante

El proyecto fbff está abandonado. El autor original (Ali Gholami) no actualiza el código hace años. Este parche funciona con FFmpeg actual, pero futuras actualizaciones de FFmpeg podrían romper la compatibilidad nuevamente.

Créditos

  • Autor original: Ali Gholami
  • PKGBUILD AUR: aksr
  • Parche documentado: opencode

Imágenes

  • fbi - Visor de imágenes (el que usás)
  • fim - Visor avanzado con soporte de zoom, pan, rotación

Video

  • fbff - El que arreglamos (ffmpeg-based)
  • mplayer - Con -vo fbdev2 o -vo drm
  • mpv - Con –vo=drm (recomendado, soporta hardware decode)

PDF

  • fbpdf - PDF básico
  • pandoc + fbterm - Convertir a texto

Texto

  • fbterm - Terminal en framebuffer
  • freetype-fonts + rendering

Audio

  • mpd + ncmpcpp - Sin X

Captura

  • fbgrab / fbgrab - Screenshots del framebuffer
  • ffmpeg -f fbdev - Grabar desktop (ya lo usás)

Juegos

  • nethack - En framebuffer
  • cava - Visualizer de audio

Extras

  • libcaca - Arte ASCII (los antiguos caca viewers)
  • mupdf - Con salida framebuffer

yay -S fim fbpdf fbgrab