Error LIBSWRESAMPLE_0 al compilar ffmpeg kubuntu 12.04 [Solucionado]

Imagen de lobo115
0 puntos

Trate de instalar ffmpeg siguiendo este tutorial http://juliensimon.blogspot.com/2013/08/howto-compiling-ffmpeg-x264-mp3-... y me salio un error en una libreria asi que tuve que hacer lo siguiente:
sudo apt-get update
sudo apt-get -y install build-essential checkinstall git libfaac-dev libgpac-dev \
libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev \
libsdl1.2-dev libtheora-dev libva-dev libvdpau-dev libvorbis-dev libx11-dev \
libxfixes-dev texi2html yasm zlib1g-dev

y despues
cd git clone git://git.videolan.org/x264 cd x264 ./configure --enable-static make sudo checkinstall --pkgname=x264 --pkgversion="3:$(./version.sh | \ awk -F'[" ]' '/POINT/{print $4"+git"$5}')" --backup=no --deldoc=yes \ --fstrans=no --
Pero despues tuve probemas con otra libreria asi que hice un apt-get install libgsm1-dev
Y entonces si termino pero cuando le doy el comando ffmpeg aparece el error:
ffmpeg: relocation error: /usr/local/lib/libavfilter.so.3: symbol swr_get_class, version LIBSWRESAMPLE_0 not defined in file libswresample.so.0

Asi que busque por internet y encontre: export LD_LIBRARY_PATH=/usr/local/lib y despues un sudo ldconfig -v, pero ningunode ellos funciono, alguien tendra una idea de que puede estar pasando? me podria ayudar? Gracias

PD. Antes de ver el error me percate, al querer instalr winff, que en synaptic me aparece como si no estuviera instalado, y si lo voy a instalar me pide que lo instale(ffmpeg), Gracias

Imagen de rioport
+1
0
-1

¿Razón por la cual quisiste compilar ffmpeg? ¿no funcionaba la versión que trae Ubuntu?.

No aparece en la lista de paquetes instalados porque compilaste desde las fuentes, para que aparezca en la lista tuviste que haber creado un paquete deb.

+1
0
-1

-- GC --

Imagen de lobo115
+1
0
-1

Por que la version que tenia era bastante antigua, inluso estaba todavia el error de avconc, y queria usar la mas nueva por la velocidad, gracias

+1
0
-1
Imagen de Alcruz
+1
0
-1

Ejecuta y acepta

sudo apt-get build-dep ffmpeg

Luego intenta compilar de nuevo, este comando te va a instalar todas las librería y librerías de desarrollo necesarias para la compilación.

+1
0
-1
Imagen de rioport
+1
0
-1

La versión 0.8.6 es de por ahí de mayo 2013, la última actualización que recibió [por parte de los desarrolladores de Ubuntu] fue en abril 2013 para corregir problemas de seguridad. En la página de Libav la última versión de la rama 0.8 es la 0.8.8 que fue lanzada en julio. Habría que aclarar que es eso de "bastante antigua". ¿cuál es el error de avconv?, no sé si te refieras a que Ubuntu usa libav en lugar de ffmpeg, pero a nivel de usuario pocas son las diferencias como para que puedas llamarla "error". Más nueva no necesariamente implica mayor velocidad.

Si tu versionitis te vence puedes bajarte las fuentes de la versión que hay en Saucy (0.8.7) y compilarla, previo paso debes hacer lo que indica Alcruz. Si quieres la última (0.8.8) solo baja los archivos libav_0.8.7-1ubuntu1.dsc y libav_0.8.7-1ubuntu1.debian.tar.gz y la versión 0.8.8 desde Libav. Modifica el archivo confflags para agregar las opciones de compilación que necesitas, modificas también el archivo changelog para cambiar la versión (creo que hay una herramienta para ello, pero lo puedes hacer manualmente) y creo que sería suficiente. Con esto tienes la ventaja de que te creará los paquetes .deb que pudiesen ser dependencias de otros (ffmpeg, libav-tools, libavfilter2, libavcodec53, ... etc). Si no tienes ganas de hacer todo eso puedes usar checkinstall, busca en internet cómo se usa.

Existe también la versión 9.9 que es la última de la última (por ahora) pero está te traerá problemas con aplicaciones que dependan de las librerías de libav. Podrías configurarla para que se instale en otra ubicación para que no interfiera con la versión del sistema, todo es cuestión de que tengas ganas de aprender; de leer y experimentar.

O controlas tu versionitis.

+1
0
-1

-- GC --

Imagen de lobo115
+1
0
-1

Gracias voy a probarlo, la version que yo tenia era la 0.7 y algo, y por más que agregaba los repositorios no me queria subir, prefiero usar ffmpeg porque en los benchmark indica que las velocidades de conversion, son superiores. Lo pruebo en cuanto llegue, muchas Gracias. Sabia que no era error, sino que ellos decidieron seguir el otro Fork, pero por los comentario prefiero irmo por ffmpeg, gracias

+1
0
-1
Imagen de lobo115
+1
0
-1

Hola, intente recompilarlo todo pero ahora tengo otro problema
ffmpeg: error while loading shared libraries: libx264.so.120: cannot open shared object file: No such file or directory
así que hice un
sudo find /usr -iname 'libx264.so.*'
y ahi vi que la versión parece superior
/usr/local/lib/libx264.so.138
hay alguna manera de decirle al ffmpeg que trabaje con está, intente con un enlace simbólico pero marco el mismo problema, Gracias

+1
0
-1
Imagen de rioport
+1
0
-1

¿Qué versión compilaste, de dónde la obtuviste, cómo la compilaste, que opciones de compilación usaste?

+1
0
-1

-- GC --

Imagen de lobo115
+1
0
-1

Buenas, use el para este codec use el tuto de la pagina principal del ffmpeg, usando el comando
git clone --depth 1 git://git.videolan.org/x264.git
cd x264
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
make
make install
make distclean

Gracias

+1
0
-1
Imagen de rioport
+1
0
-1

Esa es la forma en que compilaste libx264, pero ¿cómo le hiciste para ffmpeg?, cuando configuraste ffmpeg ¿le indicaste dónde buscar la librería libx264, cómo lo hiciste?, porque el problema lo parece tener ffmpeg y no la librería de la que describes los pasos para compilarla/instalarla.

Edito: además dime qué versión de ffmpeg estás compilando.

+1
0
-1

-- GC --

Imagen de lobo115
+1
0
-1

Hola, hice un git clone asi que es la ultima
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
el release es el 2.0, la version que marca el script version es N-56827-g64327aa, no le indique como buscar la libreria al compilar solo le indique que habilitara esta libreria
--enable-libx264
el comando completo fue
./configure --prefix=/usr/local --enable-gpl --enable-version3 --enable-nonfree --enable-shared --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfaac --enable-libgsm --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid

Gracias

+1
0
-1
Imagen de lobo115
+1
0
-1

Instale el vlc y el me instalo la versión 120, pero ahora regrese al mismo error del inicio:
ffmpeg: relocation error: /usr/local/lib/libavfilter.so.3: symbol swr_get_class, version LIBSWRESAMPLE_0 not defined in file libswresample.so.0 with link time reference
Y respecto a lo anterior hay alguna forma de decirle que use la version 138, gracias

+1
0
-1
Imagen de rioport
+1
0
-1

Creí que estabas usando la guía que mencionas en una pregunta que hiciste en askubuntu, pero no. En esa guía se están instalando los binarios y las bibliotecas en la carpeta home del usuario, al igual que ffmpeg y esto último es lo que no estás haciendo, estás usando las bibliotecas [bastante antiguas] del sistema para compilar ffmpeg y ademas lo estás configurando para que se instale en /usr/local.

+1
0
-1

-- GC --

Imagen de lobo115
+1
0
-1

Hola, muchas gracias portu respuesta y perdon por todas las molestia, pero ¿no seria mejor instalarlo en /usr/local para todos los usuario? ¿vos que me recomendarias que hiciera?¿Como le digo que no me instale las librerias en home sino en el destino? pense que le estaba diciendo que las librerias las instalara en el destino correcto, incluso vi una version más nueva del x264 en el directorio lib, Gracias.
PD. Si estaba usando esa guía, pero me salia un error con una libreria, y tuve instalarla usando el comando que presente anteriormente.

+1
0
-1
Imagen de rioport
+1
0
-1

¿no seria mejor instalarlo en /usr/local para todos los usuario? Sí si en tu equipo hay más usuarios.

¿Como le digo que no me instale las librerias en home sino en el destino? ¿A quién?, ffmpeg no te está instalando sus bibliotecas en la carpeta de tu usuario, para las bibliotecas (como la de x264) elimina las lineas --prefix="$HOME/ffmpeg_build" y --bindir="$HOME/bin" ya que por default se instala en /usr/local, pero no estaría de más si le pones --prefix=/usr/local.

No sé mucho de esto, pero lo que estoy viendo es que estás haciendo una mezcolanza entre compilar algunas bibliotecas de manera estática y otras compartidas, o usas una u otra. Si vas a usar bibliotecas enlazadas estaticamente, tendrás que compilar todas las que vayas a usar en ffmpeg de esa forma y al compilar ffmpeg indicarle que las bibliotecas usadas son de este tipo con --extra-libs=-static --extra-cflags=--static, por ahí puede estar el problema de las bibliotecas.

+1
0
-1

-- GC --

Imagen de lobo115
+1
0
-1

Hola, gracias, me podrías decir cuales estoy compilando de manera estática y cuales de manera dinámica?, me puse a leer un poco de esto por internet, pero aun no entiendo cuales estoy compilando de manera estática y cuales no, Muchas gracias , y gracias por la paciencia, también.

+1
0
-1
Imagen de rioport
+1
0
-1

Basándome en ésta guía no fue muy difícil compilar ffmpeg, aquí la salida en terminal de ffmpeg -encoders|grep -E "mp3|xvid|aac|gsm|amr|x264|theora|vorbis":

ffmpeg version git-2013-10-11-024bf3a Copyright (c) 2000-2013 the FFmpeg developers
  built on Oct 11 2013 22:54:27 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
...
 V..... libx264              libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
 V..... libx264rgb           libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB (codec h264)
 V..... libtheora            libtheora Theora (codec theora)
 A..X.. aac                  AAC (Advanced Audio Coding)
 A..... libfdk_aac           Fraunhofer FDK AAC (codec aac)
 A..... libmp3lame           libmp3lame MP3 (MPEG audio layer 3) (codec mp3)
 A..X.. vorbis               Vorbis
 A..... libvorbis            libvorbis (codec vorbis)

Nota: No tiene soporte para xvid, gsm, amr porque lo compilé en un entorno chroot con apenas lo mínimo, pero el fmpeg resultante de la siguiente guía sí lo tiene.

Instalando las dependencias:

sudo apt-get update
sudo apt-get -y install autoconf automake build-essential git libass-dev libgpac-dev \
  libsdl1.2-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libtool \
  libva-dev libvdpau-dev libvorbis-dev libgsm1-dev libxvidcore-dev libx11-dev \
  libxext-dev libxfixes-dev pkg-config texi2html zlib1g-dev

Creamos la carpeta en donde se compilaran algunas de las dependencias de ffmpeg:

mkdir ~/ffmpeg_sources

Obtención, compilación e instalación de las dependencias y de ffmpeg:

yasm:

cd ~/ffmpeg_sources
wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
tar xzvf yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure
make
make install
make distclean
. ~/.profile

x264:

cd ~/ffmpeg_sources
git clone --depth 1 git://git.videolan.org/x264.git
cd x264
./configure --enable-static
make
make install
make distclean

fdk-aac

cd ~/ffmpeg_sources
git clone --depth 1 git://github.com/mstorsjo/fdk-aac.git
cd fdk-aac
autoreconf -fiv
./configure --disable-shared
make
make install
make distclean

libmp3lame:

sudo apt-get install nasm
cd ~/ffmpeg_sources
wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
tar xzvf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure --enable-nasm --disable-shared
make
make install
make distclean

libopus:

cd ~/ffmpeg_sources
wget http://downloads.xiph.org/releases/opus/opus-1.0.3.tar.gz
tar xzvf opus-1.0.3.tar.gz
cd opus-1.0.3
./configure --disable-shared
make
make install
make distclean

libvpx:

cd ~/ffmpeg_sources
git clone --depth 1 http://git.chromium.org/webm/libvpx.git
cd libvpx
./configure --disable-examples
make
make install
make clean

ffmpeg:

cd ~/ffmpeg_sources
git clone --depth 1 git://source.ffmpeg.org/ffmpeg
cd ffmpeg
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
./configure \
  --extra-cflags="-I/usr/local/include" --extra-ldflags="-L/usr/local/lib" \
  --extra-libs="-ldl" --enable-gpl --enable-libass --enable-libfdk-aac \
  --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx \
  --enable-libx264 --enable-nonfree --enable-x11grab --enable-libxvid \
  --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libgsm
make
make install
make distclean
hash -r

Y ahora sí está disponible para todos los usuarios. ¿El problema? el problema es que para actualizar ffmpeg hay que borrar cada uno de los archivos que se instalaron (con sus posibles excepciones). Si se ejecutan los pasos descritos todos estarán en /usr/local y regados en las diferentes subcarpetas (bin, include, lib, ...), se puede borrar a lo bestia el contenido de la carpeta /usr/local, pero puede haber problemas si se han instalado otros programas ahí.

+1
0
-1

-- GC --

Imagen de lobo115
+1
0
-1

Gracias por la respuesta lo probare este fin de semana, ya que prbablemente tenga que formatear, por aqui indico como me fue, gracias

+1
0
-1
Imagen de lobo115
+1
0
-1

Buenas, intente instalarlo en la mia, pero debe ser por que habia intentado antes de la otra manera, por lo que probe en otra pc, y despues de unos cambios lo logre instalar, pero no pude intentar convertir un video por que la iban a a usar. Para poder instalarlo todos los make install tuve que hacerlos con sudo, y en el configure del ffmpeg tuve que habilitarle la opcion --enable-version3, por un suceso con opus, en cuanto pueda formatear mi pc lo instalo y hago la prueba. Gracias

el resulatdo del comando fue:

ffmpeg version git-2013-10-27-dbe6f9f
built on Oct 28 2013 11:18:09 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
configuration: --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libgsm --enable-version3
libavutil      52. 48.100 / 52. 48.100
libavcodec     55. 39.100 / 55. 39.100
libavformat    55. 19.104 / 55. 19.104
libavdevice    55.  5.100 / 55.  5.100
libavfilter     3. 90.100 /  3. 90.100
libswscale      2.  5.101 /  2.  5.101
libswresample   0. 17.104 /  0. 17.104
libpostproc    52.  3.100 / 52.  3.100
+1
0
-1
Imagen de lobo115
+1
0
-1

Buenas, ya me trabaja con esto, solo que no puedo usar winff con el, Gracias

+1
0
-1