ffmpeg compile makefile

来源:互联网 发布:小宇热游淘宝 编辑:程序博客网 时间:2024/06/06 09:10

# AVC Makefile

AACPLUS_MOD=aacplus
ASS_MOD=ass
BLURAY_MOD=bluray
FAAC_MOD=faac
FDKAAC_MOD=fdk-aac
FFMPEG_MOD=ffmpeg
FFTW3_MOD=fftw3
FREETYPE_MOD=freetype
LIVE555_MOD=live555
MAD_MOD=mad
MLT_MOD=mlt
OGG_MOD=ogg
OPENAMR_MOD=open-amr
OPENCV_MOD=opencv
OPENJPEG_MOD=openjpeg
OPENJP2_MOD=openjp2
RTMP_MOD=rtmp
VOAAC_MOD=vo-aac
VOAMR_MOD=vo-amr
VORBIS_MOD=vorbis
VPX_MOD=vpx
X264_MOD=x264
XML2_MOD=xml2
XVID_MOD=xvid

XVID_ALIAS=$(XVID_MOD)/build/generic
RTMP_ALIAS=$(RTMP_MOD)/librtmp

BUILD_DIR ?= $(shell pwd)
INSTALL_DIR := /usr/local/codecs
INSTALL_PREFIX := $(INSTALL_DIR)

AACPLUS_PREFIX := $(INSTALL_PREFIX)
ASS_PREFIX := $(INSTALL_PREFIX)
BLURAY_PREFIX := $(INSTALL_PREFIX)
FAAC_PREFIX := $(INSTALL_PREFIX)
FDKAAC_PREFIX := $(INSTALL_PREFIX)
FFMPEG_PREFIX := $(INSTALL_PREFIX)
FFTW3_PREFIX := $(INSTALL_PREFIX)
FREETYPE_PREFIX := $(INSTALL_PREFIX)
LIVE555_PREFIX := $(INSTALL_PREFIX)
MAD_PREFIX := $(INSTALL_PREFIX)
MLT_PREFIX := $(INSTALL_PREFIX)
OGG_PREFIX := $(INSTALL_PREFIX)
OPENAMR_PREFIX := $(INSTALL_PREFIX)
OPENCV_PREFIX := $(INSTALL_PREFIX)
OPENJPEG_PREFIX := $(INSTALL_PREFIX)
OPENJP2_PREFIX := $(INSTALL_PREFIX)
RTMP_PREFIX := $(INSTALL_PREFIX)
VOAAC_PREFIX := $(INSTALL_PREFIX)
VOAMR_PREFIX := $(INSTALL_PREFIX)
VORBIS_PREFIX := $(INSTALL_PREFIX)
VPX_PREFIX := $(INSTALL_PREFIX)
X264_PREFIX := $(INSTALL_PREFIX)
XML2_PREFIX := $(INSTALL_PREFIX)
XVID_PREFIX := $(INSTALL_PREFIX)

CODEC_INC :=$(INSTALL_PREFIX)/include
CODEC_LIB :=$(INSTALL_PREFIX)/lib

SUBMODS := $(AACPLUS_MOD)
SUBMODS += $(ASS_MOD)
SUBMODS += $(BLURAY_MOD)
SUBMODS += $(FAAC_MOD)
SUBMODS += $(FDKAAC_MOD)
SUBMODS += $(FFMPEG_MOD)
SUBMODS += $(FFTW3_MOD)
SUBMODS += $(FREETYPE_MOD)
SUBMODS += $(LIVE555_MOD)
SUBMODS += $(MAD_MOD)
#SUBMODS += $(MLT_MOD)
SUBMODS += $(OGG_MOD)
SUBMODS += $(OPENAMR_MOD)
SUBMODS += $(OPENCV_MOD)
SUBMODS += $(OPENJPEG_MOD)
#SUBMODS += $(OPENJP2_MOD)
SUBMODS += $(RTMP_MOD)
SUBMODS += $(VOAAC_MOD)
SUBMODS += $(VOAMR_MOD)
SUBMODS += $(VORBIS_MOD)
SUBMODS += $(VPX_MOD)
SUBMODS += $(X264_MOD)
SUBMODS += $(XML2_MOD)
SUBMODS += $(XVID_MOD)

FFMPEG_DEPMODS := $(AACPLUS_MOD)
FFMPEG_DEPMODS += $(ASS_MOD)
FFMPEG_DEPMODS += $(BLURAY_MOD)
FFMPEG_DEPMODS += $(FAAC_MOD)
FFMPEG_DEPMODS += $(FDKAAC_MOD)
FFMPEG_DEPMODS += $(FFTW3_MOD)
FFMPEG_DEPMODS += $(FREETYPE_MOD)
FFMPEG_DEPMODS += $(MAD_MOD)
FFMPEG_DEPMODS += $(OGG_MOD)
FFMPEG_DEPMODS += $(OPENAMR_MOD)
FFMPEG_DEPMODS += $(OPENCV_MOD)
FFMPEG_DEPMODS += $(OPENJPEG_MOD)
FFMPEG_DEPMODS += $(RTMP_MOD)
FFMPEG_DEPMODS += $(VOAAC_MOD)
FFMPEG_DEPMODS += $(VOAMR_MOD)
FFMPEG_DEPMODS += $(VORBIS_MOD)
FFMPEG_DEPMODS += $(VPX_MOD)
FFMPEG_DEPMODS += $(X264_MOD)
FFMPEG_DEPMODS += $(XVID_MOD)

SYS_PKG_CONFIG_PATH := $(PKG_CONFIG_PATH)
PKG_CONFIG_PATH += :$(INSTALL_PREFIX)/lib/pkgconfig

export BUILD_DIR INSTALL_PREFIX CODEC_INC CODEC_LIB
export PKG_CONFIG_PATH

.PHONY: all install clean distclean ffmpeg_deplibs $(SUBMODS)

all: $(SUBMODS)

install:
 for dir in $(subst $(XVID_MOD),$(XVID_ALIAS),$(subst $(RTMP_MOD), $(RTMP_ALIAS), $(SUBMODS)) ); do $(MAKE) $@ -C $$dir || exit $$?; done
# for dir in $(SUBMODS); do $(MAKE) $@ -C $$dir || exit $$?; done

clean distclean:
 for dir in $(subst $(XVID_MOD),$(XVID_ALIAS),$(subst $(RTMP_MOD), $(RTMP_ALIAS), $(SUBMODS)) ); do $(MAKE) $@ -C $$dir || exit $$?; done
# for dir in $(SUBMODS); do $(MAKE) $@ -C $$dir || exit $$?; done

ffmpeg_deplibs: $(FFMPEG_DEPMODS)
 @echo "Installing ffmpeg depend libs ..."
 for dir in $(subst $(XVID_MOD),$(XVID_ALIAS),$(subst $(RTMP_MOD), $(RTMP_ALIAS), $?) ); do $(MAKE) install -C $$dir || exit $$?; done

$(AACPLUS_MOD): $(FFTW3_MOD)
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $@ $(AACPLUS_PREFIX) $(FFTW3_PREFIX) || exit $$?
 make -C $@ -j4 || exit $$?;

$(ASS_MOD):
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $@ $(ASS_PREFIX) || exit $$?
 make -C $@ -j4 || exit $$?;

$(BLURAY_MOD):
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $@ $(BLURAY_PREFIX) || exit $$?
 make -C $@ -j4 || exit $$?;

$(FAAC_MOD):
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $@ $(FAAC_PREFIX) || exit $$?
 make -C $@ -j4 || exit $$?;

$(FDKAAC_MOD):
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $@ $(FDKAAC_PREFIX) || exit $$?
 make -C $@ -j4 || exit $$?;

$(FFMPEG_MOD): ffmpeg_deplibs
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $@ $(FFMPEG_PREFIX) $(INSTALL_PREFIX)/include  $(INSTALL_PREFIX)/lib || exit $$?
 make -C $@ -j4 || exit $$?;

$(FFTW3_MOD):
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $@ $(FFTW3_PREFIX) || exit $$?
 make -C $@ -j4 || exit $$?;

$(FREETYPE_MOD):
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $@ $(FREETYPE_PREFIX) || exit $$?
 make -C $@ -j4 || exit $$?;

$(LIVE555_MOD):
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $@ linux || exit $$?
 make -C $@ -j4 || exit $$?;

$(MAD_MOD):
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $@ $(MAD_PREFIX) || exit $$?
 make -C $@ -j4 || exit $$?;

$(MLT_MOD):
 @echo "Configuring and compiling module $@ ..."
# ./$@_config.sh $@ $(MLT_PREFIX) || exit $$?
# make -C $@ -j4 || exit $$?;

$(OGG_MOD):
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $@ $(OGG_PREFIX) || exit $$?
 make -C $@ -j4 || exit $$?;
 make -C $@ install

$(OPENAMR_MOD):
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $@ $(OPENAMR_PREFIX) || exit $$?
 make -C $@ -j4 || exit $$?;

$(OPENCV_MOD):
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $@ $(OPENCV_PREFIX) || exit $$?
 make -C $@ -j4 || exit $$?;

$(OPENJPEG_MOD):
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $@ $(OPENJPEG_PREFIX) || exit $$?
 make -C $@ -j4 || exit $$?;

$(OPENJP2_MOD):
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $@ $(OPENJP2_PREFIX) || exit $$?
 make -C $@ -j4 || exit $$?;

$(RTMP_MOD): $(RTMP_ALIAS)
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $? $(RTMP_PREFIX) || exit $$?
 make -C $? -j4 || exit $$?;

$(RTMP_ALIAS):

$(VOAAC_MOD):
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $@ $(VOAAC_PREFIX) || exit $$?
 make -C $@ -j4 || exit $$?;

$(VOAMR_MOD):
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $@ $(VOAMR_PREFIX) || exit $$?
 make -C $@ -j4 || exit $$?;

$(VORBIS_MOD):
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $@ $(VORBIS_PREFIX) $(OGG_PREFIX) || exit $$?
 make -C $@ -j4 || exit $$?;

$(VPX_MOD):
 @echo "Configuring and compiling module $@ ..."
 make -C $@ clean || exit $$?;
 ./$@_config.sh $@ $(VPX_PREFIX) || exit $$?
 make -C $@ -j4 || exit $$?;

$(X264_MOD):
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $@ $(X264_PREFIX) || exit $$?
 make -C $@ -j4 || exit $$?;

$(XML2_MOD):
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $@ $(XML2_PREFIX) || exit $$?
 make -C $@ -j4 || exit $$?;

$(XVID_MOD): $(XVID_ALIAS)
 @echo "Configuring and compiling module $@ ..."
 ./$@_config.sh $? $(XVID_PREFIX) || exit $$?
 make -C $? -j4 || exit $$?;

$(XVID_ALIAS):

 




#######################################################################


#!/bin/bash

#attention: pls add quote in cflags and ldflags
ffmpeg_prefix=/usr/local/ffmpeg
ffmpeg_extra_cflags="-I/usr/local/x264/include -I/usr/local/faac/include"
ffmpeg_extra_ldflags="-L/usr/local/x264/lib -L/usr/local/faac/lib"

#export PKG_CONFIG_PATH=${ffmpeg_extra_ldflags}/pkgconfig:$PKG_CONFIG_PATH

cd ffmpeg

./configure --prefix=${ffmpeg_prefix} \
 --enable-version3 \
 --enable-gpl \
        --enable-pthreads \
 --enable-avfilter \
 --enable-shared \
 --disable-encoders \
 --disable-decoders \
 --disable-avdevice \
 --enable-libx264 \
 --enable-libfaac \
 --enable-encoder=rawvideo \
 --enable-decoder=rawvideo \
 --enable-encoder=libx264 \
 --enable-decoder=h264 \
 --enable-decoder=hevc \
 --enable-decoder=mp3 \
 --enable-encoder=pcm_s16le \
 --enable-decoder=pcm_s16le \
 --enable-encoder=libfaac \
 --enable-decoder=aac \
 --enable-decoder=aac_latm \
 --disable-muxers \
 --enable-muxer=rawvideo \
 --enable-muxer=mpegts \
 --enable-muxer=h264 \
 --enable-muxer=f4v \
 --enable-muxer=flv \
 --enable-muxer=mov \
 --enable-muxer=mp4 \
 --enable-muxer=ogg \
 --enable-muxer=rtp \
 --enable-muxer=rtsp \
 --enable-muxer=tgp \
 --enable-muxer=tg2 \
 --enable-muxer=pcm_s16le \
 --disable-demuxers \
 --enable-demuxer=rawvideo \
 --enable-demuxer=mpegts \
 --enable-demuxer=aac \
 --enable-demuxer=flv \
 --enable-demuxer=mov \
 --enable-demuxer=ogg \
 --enable-demuxer=pcm_s16le \
 --enable-demuxer=rtp \
 --enable-demuxer=rtsp \
 --enable-demuxer=sdp \
 --enable-debug \
        --enable-nonfree \
 --disable-postproc  \
 --disable-ffserver --disable-ffplay \
 --disable-stripping \
 --extra-cflags="$ffmpeg_extra_cflags" \
 --extra-ldflags="$ffmpeg_extra_ldflags"

make clean
make -j4 || exit 1
make install