set(FFMPEG_INSTALL_PATH "${EXTERNAL_LIBS_OUTPUT_PATH}/ffmpeg") set(EXTERNAL_LIBS_PATH "${EXTERNAL_LIBS_PATH};${FFMPEG_INSTALL_PATH}/lib" CACHE STRING INTERNAL FORCE) find_program(NASM nasm) if(NOT NASM) message("nasm not found. Now install.") execute_process(COMMAND sudo apt install nasm WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/) endif() if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX}) set(CONFIGURE_COMMAND "--enable-cross-compile --target-os=linux --arch=x86_64 \ --cc=${CMAKE_C_COMPILER} \ --cxx=${CMAKE_CXX_COMPILER} \ --prefix=${FFMPEG_INSTALL_PATH} \ --enable-parsers --enable-decoder=h264 --enable-libfdk-aac \ --enable-ffmpeg --enable-static \ --enable-gpl --enable-nonfree --enable-version3 --enable-small \ --enable-muxer=mov --enable-muxer=mp4 \ --enable-decoder=aac --enable-decoder=pcm_alaw --enable-encoder=pcm_alaw \ --enable-demuxer=mov \ --enable-protocol=file --enable-bsf=aac_adtstoasc --enable-bsf=h264_mp4toannexb --enable-bsf=hevc_mp4toannexb \ --extra-libs=-lm \ --extra-cflags=\"-I${EXTERNAL_LIBS_OUTPUT_PATH}/fdk-aac/include\" \ --extra-ldflags=\"-L${EXTERNAL_LIBS_OUTPUT_PATH}/fdk-aac/lib\"") else() set(CONFIGURE_COMMAND "--enable-cross-compile --target-os=linux --arch=arm64 \ --cc=${CMAKE_C_COMPILER} \ --cxx=${CMAKE_CXX_COMPILER} \ --prefix=${FFMPEG_INSTALL_PATH} \ --disable-asm --enable-parsers --disable-decoders --enable-decoder=h264 --enable-libfdk-aac \ --disable-debug --enable-ffmpeg --enable-shared --enable-static --disable-stripping --disable-doc \ --enable-gpl --enable-nonfree --enable-version3 --enable-small \ --disable-mipsdsp --disable-mipsdspr2 \ --disable-encoders \ --disable-muxers --enable-muxer=mov --enable-muxer=mp4 --enable-encoder=mpeg4 \ --enable-decoder=aac --enable-encoder=aac --enable-decoder=pcm_alaw --enable-encoder=pcm_alaw \ --disable-filters \ --enable-demuxer=mov \ --disable-parsers \ --disable-protocols --enable-protocol=file \ --disable-bsfs --enable-bsf=aac_adtstoasc --enable-bsf=h264_mp4toannexb --enable-bsf=hevc_mp4toannexb \ --disable-indevs \ --disable-outdevs --disable-ffprobe --disable-ffmpeg --disable-ffplay --disable-debug \ --extra-libs=-lm \ --extra-cflags=\"-I${EXTERNAL_LIBS_OUTPUT_PATH}/fdk-aac/include\" \ --extra-ldflags=\"-L${EXTERNAL_LIBS_OUTPUT_PATH}/fdk-aac/lib\"") endif() message("Compile ffmpeg comand : ${CONFIGURE_COMMAND}") add_custom_command( OUTPUT ${EXTERNAL_LIBS_OUTPUT_PATH}/fdk-aac/lib/libfdk-aac.a COMMAND echo "Did not found fdk-aac lib in output_files, now compile fdk-aac." COMMAND make fdk_aac WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/ ) add_custom_target( ffmpeg DEPENDS ${EXTERNAL_LIBS_OUTPUT_PATH}/fdk-aac/lib/libfdk-aac.a COMMAND echo "Now compile ffmpeg, please wait..." COMMAND test -f ${EXTERNAL_SOURCE_PATH}/ffmpeg/ffmpeg-6.1.1/Makefile || tar -xf ffmpeg_6.1.1.orig.tar.xz COMMAND chmod 777 -R ffmpeg-6.1.1 COMMAND cd ffmpeg-6.1.1 && bash -c "./configure ${CONFIGURE_COMMAND}" COMMAND cd ffmpeg-6.1.1 && make COMMAND cd ffmpeg-6.1.1 && make install COMMAND cd ffmpeg-6.1.1 && make clean WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/ffmpeg/ ) add_custom_target( remove_ffmpeg_source_files COMMAND rm -rf ffmpeg-6.1.1 WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/ffmpeg/ ) # 将clean目标依赖于我们自定义的clean_script目标 add_dependencies(sdk_clean remove_ffmpeg_source_files)