osg compila el complemento ffmpeg

osg puede usar el complemento ffmpeg para realizar la función de reproducción de video, pero este complemento solo se puede usar al compilar osg para garantizar una finalización exitosa. Hay algunos puntos que necesitan atención especial durante el proceso de compilación; de lo contrario, puede que no se pueda compilar correctamente.

1. Para seleccionar correctamente la versión de ffmpeg

Primero, vaya a https://ffmpeg.zeranoe.com/builds/win32/dev/ para descargar la versión de desarrollo de ffmpeg. La versión mínima es 3.2. Se debe prestar especial atención aquí, porque el módulo de procesamiento de ffmpeg en osg llama al Interfaz de biblioteca de desarrollo ffmpeg relacionada, si la versión seleccionada no corresponde, generará informes como: error C2065: “PIX_FMT_YUVA420P”: identificador no declarado, error C3861: “avcodec_alloc_frame”: identificador no encontrado. . . Espere el error. Este problema se informará cuando la versión osg3.4.0 use ffmpeg3.2 y superior, así que intente usar una versión más nueva de osg para evitar tales problemas.

2. Al configurar cmake, realice las modificaciones y configuraciones de rutas adecuadas

Modifique el archivo OpenSceneGraph-3.6.3\CMakeModules\FindFFmpeg.cmake, agregue SET(STDINT_OK TRUE) después de la línea 136 SET(FFMPEG_FOUND "NO") y asegúrese de que FFMPEG_STDINT_INCLUDE_DIR de FFMPEG en la interfaz de CMake esté vacío. Seleccione Agrupados en cmake, verá una opción de ffmpeg, seleccione correctamente la ruta correspondiente de ffmpeg y el problema de las barras invertidas.

3. Problema de Inttypes.h

En common.h, puede informar que el archivo de inclusión no se puede abrir: "inttypes.h": No existe tal archivo o directorio. La solución es la siguiente:

Comente #include <inttypes.h>

Agrega el siguiente código:

h> #else typedef signado char int8_t;      typedef firmado corto int16_t;      typedef firmó int int32_t;      typedef char sin firmar uint8_t;      typedef unsigned short uint16_t;      typedef sin firmar int uint32_t;      #ifdef CONFIG_WIN32       typedef firmado __int64 int64_t;      
















typedef sin firmar __int64 uint64_t;      
#else /* otro SO */      
typedef firmado long long int64_t;      
typedef unsigned largo largo uint64_t;      
#endif /* otro sistema operativo */      
#endif /* EMULATE_INTTYPES */

 

 

Supongo que te gusta

Origin blog.csdn.net/zhuquanfu/article/details/84635316
Recomendado
Clasificación