Red de conocimiento informático - Material del sitio web - Cómo compilar la biblioteca estática rtmp polarssl para ffmpeg usando ndk

Cómo compilar la biblioteca estática rtmp polarssl para ffmpeg usando ndk

¿Cómo compilar la biblioteca estática rtmp polarssl para ffmpeg con ndk? Este problema me llevó todo el día. Se han encontrado muchos problemas pequeños, por lo que los registraré aquí para mi comodidad y la de los demás.

1. Compile polarssl y verifique su archivo Léame. No se requiere configuración. Solo necesitas traer los parámetros necesarios al realizarlo. Pero recuerde traer el parámetro cc (apuntando a su brazo gcc) cada vez que ejecute el comando make, porque trato de no traer el parámetro CC al realizar la instalación. Aunque puedo compilar polarssl, rtmp no hace referencia a él correctamente.

2. Debido a que polarssl que usé antes es la última versión (1.3.7), y librtmp parece usar la API debajo de polarssl1.0.0, necesito modificar parte del código fuente de rtmp para llamar al nuevo. API polarssl. Puede consultar "Migración de polar SSL-1.2 a la rama polar SSL 1.3" y "[rtmp dump] actualización principal de la rama. Una corrección 312 AC 7 compatible con polar SSL >:= 1.1.0".

3. Hay un error de referencia no definida a 'havege_random'. Esto se debe a que polarssl tiene el módulo havege desactivado de forma predeterminada y debe activarse manualmente. Lo principal es modificar include/polarssl/config.h, eliminar el comentario antes de POLARSSL_HAVEGE_C, es decir, definir POLARSSL_HAVEGE_C, de la siguiente manera:

#define POLARSSL_HAVEGE_C

4. Las dos bibliotecas anteriores, puede comenzar a compilar FFMPEG (versión 2.1.1). Si encuentra los siguientes problemas, verifique _pkg_configlibrtmp librtmp/rtmp.HR tmp_socket.

Error: librtmp no encontrado

Hay tres soluciones:

Primero, dado que es la más difundida en la web, esta es relativamente simple El método consiste en modificar la configuración de ffmpeg e ingresar la siguiente línea de código:

Enable librtmp amp amprequire _ pkg _ config librtmp librtmp/rtmp h RTMP _ Socket

Reemplazar con. :

p>

Habilitar librtmp amp requiere librtmp librtmp/rtmp . h RTMP _socket-lrtmp -lpolarssl -lz

O comentar directamente amp* * * parte, y luego agregue librtmp usted mismo Ruta de la biblioteca.

El segundo (recomendado, porque resolver esto resolverá la mayoría de los errores de no poder encontrar la biblioteca). Porque la herramienta pkg-config se usa para encontrar la biblioteca aquí, y esta herramienta ndk no lo proporciona, por lo que si ocurre un error relacionado con check_pkg_config, siempre que preste un poco de atención, encontrará que cuando usa configure para configurar la compilación cruzada de ffmpeg, el pkg-config correspondiente no existe.

No estoy muy familiarizado con esta herramienta, así que simplemente agregué un enlace suave pkg-config al sistema, de la siguiente manera:

ln-s/usr/bin/pkg-config/home/cidy 0106/ Android- ndk-r9d/tool ​​chains/arm-Linux-androidea bi-4.8/pre-built/Linux-x86_64/bin/arm-Linux-androidea bi-pkg-config

Si configurada en este momento, es posible que reciba un mensaje de error que indique que no se puede encontrar la biblioteca polarssl. Debe modificar librtmp.pc en el directorio de instalación de librtmp y colocar el siguiente contenido:

Biblioteca: -L${libdir} -lrtmp -lz

Reemplazar con:

Biblioteca: -L${libdir} -lrtmp -lz -lpolarssl

En este punto, ffmpeg se puede compilar correctamente.