video analysis2.0拆分,ffmpeg封装go接口库
编辑 | blame | 历史 | 原始文档
cmake_minimum_required(VERSION 3.3)

set(BIN cffmpeg)

project(${BIN})

if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE "Release")
endif()

option(GB28181 "help string describing GB28181" ON)
option(ARM "help string describing ARM" OFF)

if (GB28181)
    set(EXTRA_FLAGS -DGB28181)
else()
    set(EXTRA_FLAGS)
endif()

set(CMAKE_CXX_FLAGS "-DLIB_CFFMPEG ${EXTRA_FLAGS} -fPIC -Wl,-Bsymbolic ${CMAKE_CXX_FLAGS}")
set(CMAKE_C_FLAGS "-DLIB_CFFMPEG ${EXTRA_FLAGS} -fPIC -Wl,-Bsymbolic ${CMAKE_C_FLAGS}")

set(CMAKE_CXX_FLAGS_DEBUG "-w -g -O0 -std=c++11 ${CMAKE_CXX_FLAGS}")
set(CMAKE_C_FLAGS_DEBUG "-w -g -O0 ${CMAKE_C_FLAGS}")

set(CMAKE_CXX_FLAGS_RELEASE "-w -g -O2 -std=c++11 ${CMAKE_CXX_FLAGS}")
set(CMAKE_C_FLAGS_RELEASE "-w -g -O2 ${CMAKE_C_FLAGS}")

include_directories(	
    ${CMAKE_SOURCE_DIR} 
    ${CMAKE_SOURCE_DIR}/csrc/thirdparty 
    ${CMAKE_SOURCE_DIR}/csrc/thirdparty/whereami
    ${CMAKE_SOURCE_DIR}/csrc/thirdparty/ffmpeg/include
    ${CMAKE_SOURCE_DIR}/csrc/thirdparty/gb28181/include
)

if (GB28181)
    link_directories(${CMAKE_SOURCE_DIR}/csrc/thirdparty/gb28181/lib)
    set(LIBGB rtspclient StreamParse)
else()
    set(LIBGB)
endif()

if (ARM)
    set(FFMPEG_PATH ${CMAKE_SOURCE_DIR}/csrc/thirdparty/arm-ffmpeg/lib)
else()
    set(FFMPEG_PATH ${CMAKE_SOURCE_DIR}/csrc/thirdparty/ffmpeg/lib)
endif()

set(CMAKE_LIBRARY_PATH ${FFMPEG_PATH} ${CMAKE_LIBRARY_PATH})
    find_library(avutil NAMES libavutil.a )
    find_library(avformat NAMES libavformat.a )
    find_library(avcodec NAMES libavcodec.a )
    find_library(avfilter NAMES libavfilter.a)
    find_library(swscale NAMES libswscale.a)
    find_library(265 NAMES libx265.a)
    find_library(264 NAMES libx264.a)

if(ARM)
    find_library(aom NAMES libaom.a)
    find_library(avdevice NAMES libavdevice.a)
    find_library(ogg NAMES libogg.a)
    find_library(fdkaac NAMES libfdk-aac.a)
    find_library(postproc NAMES libpostproc.a)
    find_library(swresample NAMES libswresample.a)
    find_library(theora NAMES libtheora.a)
    find_library(theoradec NAMES libtheoradec.a)
    find_library(theoraenc NAMES libtheoraenc.a)
    find_library(vidstab NAMES libvidstab.a)
    find_library(vorbis NAMES libvorbis.a)
    find_library(vorbisenc NAMES libvorbisenc.a)
    find_library(vorbisfile NAMES libvorbisfile.a)
    find_library(vpx NAMES libvpx.a)
    find_library(xvidcore NAMES libxvidcore.a)
    find_library(mp3 NAMES libmp3lame.a)
endif()

set(LINK_LIB 
   ${avformat} 
   ${avcodec} 
   ${avfilter} 
   ${swscale} 
   ${avutil} 
   ${265} 
   ${264} 
   )
if(ARM)
    list(APPEND LINK_LIB
   ${aom}
   ${avdevice}
   ${ogg}
   ${fdkaac}
   ${mp3}
   ${postproc}
   ${swresample}
   ${theora}
   ${theoradec}
   ${theoraenc}
   ${vidstab}
   ${vorbis}
   ${vorbisenc}
   ${vorbisfile}
   ${vpx}
   ${xvidcore}
   )
endif()

file(GLOB_RECURSE FFMPEG_LIST ${CMAKE_SOURCE_DIR}/csrc/*.cpp)
list(APPEND FFMPEG_LIST ${CMAKE_SOURCE_DIR}/csrc/thirdparty/whereami/whereami.c)

add_library(${BIN} SHARED ${FFMPEG_LIST})

target_link_libraries(${BIN} ${LINK_LIB} ${LIBGB} pthread dl)