天天看点

ffmpeg compile makefile

# 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