Cómo compilar ffmpeg para iphone
Compilar FFmpeg en iPhone
mkdir ./build
# configure para armv7 build
./configure \
--cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc \
--as='gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/ Desarrollador /usr/bin/gcc' \
--sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk \
--extra-ldflags =-L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/system \
--target-os=darwin \
--arch=arm \
--cpu=cortex-a8 \
--extra-cflags='-arch armv7' \
-- extra -ldflags='-arch armv7' \
--enable-pic \
--enable-cross-compile \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffserver \
--disable-doc
# compilación para armv7
hacer limpieza
hacer
# copiar las librerías armv7
mkdir ./build/armv7
cp -f ./libavcodec/libavcodec.a ./build/armv7/libavcodec.a
cp -f ./libavdevice/libavdevice.a ./build/armv7/libavdevice.a
cp -f ./libavfilter/libavfilter.a ./build/armv7/libavfilter.a
cp -f ./libavformat/libavformat.a ./build/armv7/libavformat.a
cp -f ./libavutil/libavutil.a ./build/armv7/libavutil.a
cp -f ./libswscale/libswscale.a ./build/armv7/libswscale.a< / p>
# configurar para compilación armv6
./configure \
--cc=/Developer/Platforms/iPhoneOS.platform/Deve
loper/usr/bin/gcc \
--as='gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' \
--sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk \
--extra-ldflags=-L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs /iPhoneOS4.3.sdk/usr/lib/system \
--target-os=darwin \
--arch=arm \
-- cpu=arm1176jzf-s \
--extra-cflags='-arch armv6' \
--extra-ldflags='-arch armv6' \
--enable-cross-compile \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffserver \ p>
--disable-doc
# compilación para armv6
hacer limpieza
hacer
# copiar armv6 libs
mkdir ./build/armv6
cp -f ./libavcodec/libavcodec.a ./build/armv6/libavcodec.a
cp -f ./libavdevice/libavdevice.a ./build/armv6/libavdevice.a
cp -f ./libavfilter/libavfilter.a ./build/armv6/libavfilter.a
cp -f ./libavformat/libavformat.a ./build/armv6/libavformat.a
cp -f ./libavutil/libavutil.a ./build/armv6/libavutil.a
cp -f ./libswscale/libswscale.a ./build/armv6/libswscale.a
# configurar para la compilación i386
./configure \
--cc=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc \
--as='gas-preprocessor.pl /Developer/Platforms/iPhoneSimulator.platform/Developer/usr /bin/gcc' \
--sysroot=/Developer/Platforms/iPhoneSimulator.platform/Deve
loper/SDKs/iPhoneSimulator4.3.sdk \
--extra-ldflags=-L/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/usr/lib/system \
--target-os=darwin \
--arch=i386 \
--cpu=i386 \
-- extra-cflags='-arch i386' \
--extra-ldflags='-arch i386' \
--enable-cross-compile \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffserver \
--disable-doc
# compilar para i386
hacer limpio
hacer
# copiar las bibliotecas de i386
mkdir ./build/i386
cp -f ./libavcodec/libavcodec.a ./build/i386/libavcodec.a
cp -f ./libavdevice/libavdevice.a ./build/i386/libavdevice. a
cp -f ./libavfilter/libavfilter.a ./build/i386/libavfilter.a
cp -f ./libavformat/libavformat.a ./build/i386/ libavformat.a
cp -f ./libavutil/libavutil.a ./build/i386/libavutil.a
cp -f ./libswscale/libswscale.a ./build/ i386/libswscale.a
# hacer bibliotecas gruesas (universales)
lipo -output ./build/libavcodec.a -create \
-arch armv6 . /build/armv6/libavcodec.a \
-arch armv7 ./build/armv7/libavcodec.a \
-arch i386 ./build/i386/libavcodec.a p>
lipo -output ./build/libavdevice.a -create \
-arch armv6 ./build/armv6/libavdevice.a \
-arch armv7 ./ build/armv7/libavdevice.a \
-arch i386 ./build/i386/libavdevice.a
lipo -output ./build/libavfilter.a -create \
-ar
ch armv6 ./build/armv6/libavfilter.a \
-arch armv7 ./build/armv7/libavfilter.a \
-arch i386 ./build/i386/libavfilter. a
lipo -output ./build/libavformat.a -create \
-arch armv6 ./build/armv6/libavformat.a \
-arch armv7 ./build/armv7/libavformat.a \
-arch i386 ./build/i386/libavformat.a
lipo -output ./build/libavutil.a -create \
-arch armv6 ./build/armv6/libavutil.a \
-arch armv7 ./build/armv7/libavutil.a \
-arch i386 ./build/i386/libavutil.a
lipo -output ./build/libswscale.a -create \
-arch armv6 ./build/armv6/libswscale.a \
-arch armv7 ./build/armv7/libswscale.a \
-arch i386 ./build/i386/libswscale.a
Lo anterior es para i386 Además, la configuración de compilación del simulador no es necesariamente segura. Aquí hay otro método de configuración:
./configure \
--disable-bzlib \
. --disable-mmx \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffserver \
--cc=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/i686-apple-darwin10-gcc-4.2.1 \
--as='gas-preprocessor/gas-preprocessor.pl /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/i686-apple-darwin10-gcc-4.2.1' \
--sysroot=/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk \
--extra-cflags='-fmessage-length=0 -pipe -Wno- trigraphs - fpascal-strings -O0 -fasm-blocks -Wreturn-type -Wunused-variable -D__IPHONE_OS_V
ERSION_MIN_REQUIRED=30000 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk -fvisibility=hidden -mmacosx-version-min=10.5 -gdwarf-2'
Otro artículo Artículo
Mover FFMPEG a iPhone o Mac OS/X
Para obtener instrucciones detalladas sobre FFMPEG, consulte los documentos en línea relevantes. Aquí solo hablamos de mover FFMPEG a iPhone o Mac OS/X; proceso y precauciones relacionadas.
FFMPEG es bastante potente. El paquete completo de FFMPEG incluye ffserver, ffplay, ffmpeg, avcodec, avdevice, avformat, avutil, swscale, etc., entre ellos, ffserver, ffplay y ffmpeg son los programas correspondientes. Básicamente es inútil para aquellos de nosotros que nos dedicamos al desarrollo de software; avcodec es una biblioteca de decodificación, avformat es una biblioteca de formatos, avutil es una biblioteca básica (pero rara vez la usamos) y swscale es una biblioteca de procesamiento de imágenes. Lo que queremos son las cuatro bibliotecas de avcodec, avformat, avutil y swscale.
El proceso de migración a Mac OS/X:
1 Configuración
./configure --prefix=/Developer/usr --cc=/ Desarrollador/usr/bin/gcc-4.0 --enable-gpl --enable-shared --disable-ipv6 --enable-swscale --enable-zlib --enable-bzlib --disable-ffmpeg --disable-ffplay - -disable-ffserver --disable-vhook
2. Compilar
hacer
3.
Nota: El directorio /Developer/usr anterior es el directorio de destino. Si su Xcode está instalado de forma predeterminada, puede compilar y depurar su código en Xcode después de la instalación;
Mueva el valor a El proceso de. simulando la plataforma iPhone bajo Mac OS/X:
1 Configuración
./configure --prefix=/Developer/usr --disable-debug --cc=/ Developer/ usr/bin/i686-apple-darwin9-gcc-4.0.1 --enable-gpl --enable-static --disable-shared --disable-ipv6 --enable-swscale --enable-zlib --enable -bzlib --disable-ffmpeg --disable-ffplay --disable-ffserver --disable-vhook --enable-pthreads
Entre ellos: --enable-shared también se puede agregar. Esta opción permite la compilación. genera una biblioteca dinámica, que se utilizará en futuras programaciones.
El directorio de instalación establecido por --prefix. Si no se agrega --enable-shared durante la configuración, se utilizarán enlaces estáticos y no se generarán las tres bibliotecas dinámicas. Al mismo tiempo, los archivos ejecutables generados por ffplay y ffmpeg también son relativamente grandes porque se pueden ejecutar sin el soporte de bibliotecas dinámicas. Pero no favorece un mayor desarrollo, por lo que también puedo considerar el uso de enlaces dinámicos.
2. Compilar
make
3. Instalar
make install
Después de la instalación, en /usr. / local/ffmpeg verá tres directorios
ubicación de la biblioteca de enlace dinámico lib
incluye archivos de encabezado utilizados en la programación
directorio bin donde se encuentra el archivo ejecutable p >
Para facilitar la programación en el futuro, copiamos las tres bibliotecas de enlaces libavcodec.so libavformat.so libavutil.so en lib a /usr/lib. Copie el directorio ffmpeg bajo el directorio de inclusión en /usr/include. Ejecute ffplay en el directorio bin para reproducir archivos de audio o video. Por ejemplo, reproduzca 1.mp3
./ffplay 1.mp3
Además, hay dos archivos en el directorio bin: ffmpeg y ffserver
ffmpeg es una muy buena herramienta de conversión de formatos de vídeo y audio. Hay mucha documentación al respecto en línea. Si no desea generar ffserver, simplemente agregue --disable-ffserver cuando ./configure.
Nota: El directorio /Developer/usr anterior es el directorio de destino. Si su Xcode está instalado de forma predeterminada, puede compilar su código en Xcode y depurarlo en el simulador después de la instalación;
p>
El proceso de migración a la plataforma iPhone:
1. Configuración
./configure --enable-cross-compile --cross-prefix=/ Desarrollador/Plataformas /iPhoneOS.platform/Developer/usr/bin/ --cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin9-gcc-4.0.1 --prefix=/Desarrollador /Platforms/ iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr --extra-cflags="-isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk" --extra- ldflags=" -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk -Wl, -syslibroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk" --arch =armv6 - -enable-armv6 --enable-gpl --enable-shared --disable-ipv6 --enable-swscale --enable-zlib --enable-bzlib --disable-ffmpeg --disable-ffplay --disable -ffserver - -disable-vhook
2. Compilar
make
3. Instalar
make install
Instrucciones: El /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ anterior es el directorio de destino. Si su Xcode está instalado de forma predeterminada, puede compilar su código en Xcode y depurarlo en el simulador después de la instalación.
Instrucciones relacionadas:
Si utiliza una biblioteca estática en ffmpeg, se producirán algunos errores de conexión; así que seleccione la biblioteca dinámica al instalar la biblioteca ffmpeg.
Bien, ahora sabemos cómo mover ffmpeg a iPhone y combinar la biblioteca ffmpeg con Xcode, por supuesto, si su herramienta Xcode no está instalada de forma predeterminada, actualice la información relacionada Opciones del directorio.