转载自:原文链接 http://blog.csdn.net/vertx/article/details/9047725
首先精简ffmpeg rules.mak
改为:
- # FFmpeg
- HASH=HEAD
- #FFMPEG_SNAPURL := http://git.videolan.org/?p=ffmpeg.git;a=snapshot;h=$(HASH);sf=tgz
- FFMPEG_SNAPURL := http://git.libav.org/?p=libav.git;a=snapshot;h=$(HASH);sf=tgz
- FFMPEGCONF = \
- --cc="$(CC)" \
- --disable-doc \
- --enable-libgsm \
- --enable-libopenjpeg \
- --disable-debug \
- --disable-avdevice \
- --disable-devices \
- --disable-avfilter \
- --disable-filters \
- --disable-bsfs \
- --disable-bzlib
- # Those tools are named differently in FFmpeg and Libav
- # --disable-ffserver \
- # --disable-ffplay \
- # --disable-ffprobe
- DEPS_ffmpeg = zlib gsm openjpeg
- # Optional dependencies
- ifdef BUILD_ENCODERS
- FFMPEGCONF += --enable-libmp3lame --enable-libvpx --disable-decoder=libvpx --disable-decoder=libvpx_vp8 --disable-decoder=libvpx_vp9
- DEPS_ffmpeg += lame $(DEPS_lame) vpx $(DEPS_vpx)
- else
- FFMPEGCONF += --disable-encoders --enable-encoder=png
- FFMPEGCONF += --disable-decoders --enable-decoder=h264
- FFMPEGCONF += --disable-muxers
- FFMPEGCONF += --disable-demuxers --enable-demuxer=rtp --enable-demuxer=rtsp
- FFMPEGCONF += --disable-protocols --enable-protocol=rtp --enable-protocol=rtsp
- FFMPEGCONF += --disable-parsers --enable-parser=h264 --enable-parser=mpeg4video
- endif
- # Small size
- ifdef ENABLE_SMALL
- FFMPEGCONF += --enable-small
- ifeq ($(ARCH),arm)
- ifdef HAVE_ARMV7A
- FFMPEGCONF += --enable-thumb
- endif
- endif
- endif
- ifdef HAVE_CROSS_COMPILE
- FFMPEGCONF += --enable-cross-compile
- ifndef HAVE_IOS
- FFMPEGCONF += --cross-prefix=$(HOST)-
- endif
- endif
- # ARM stuff
- ifeq ($(ARCH),arm)
- FFMPEGCONF += --arch=arm
- ifdef HAVE_NEON
- FFMPEGCONF += --enable-neon
- endif
- ifdef HAVE_ARMV7A
- FFMPEGCONF += --cpu=cortex-a8
- endif
- endif
- # MIPS stuff
- ifeq ($(ARCH),mipsel)
- FFMPEGCONF += --arch=mips
- endif
- # x86 stuff
- ifeq ($(ARCH),i386)
- ifndef HAVE_DARWIN_OS
- FFMPEGCONF += --arch=x86
- endif
- endif
- # Darwin
- ifdef HAVE_DARWIN_OS
- FFMPEGCONF += --arch=$(ARCH) --target-os=darwin
- ifneq ($(findstring $(ARCH),i386 x86_64),)
- FFMPEGCONF += --enable-memalign-hack
- endif
- ifeq ($(ARCH),x86_64)
- FFMPEGCONF += --cpu=core2
- endif
- endif
- ifdef HAVE_IOS
- ifeq ($(ARCH),arm)
- FFMPEGCONF += --enable-pic --as="$(AS)"
- endif
- endif
- # Linux
- ifdef HAVE_LINUX
- FFMPEGCONF += --target-os=linux --enable-pic
- endif
- # Windows
- ifdef HAVE_WIN32
- ifndef HAVE_MINGW_W64
- DEPS_ffmpeg += directx
- endif
- FFMPEGCONF += --target-os=mingw32 --enable-memalign-hack
- FFMPEGCONF += --enable-w32threads --enable-dxva2 \
- --disable-decoder=dca
- ifdef HAVE_WIN64
- FFMPEGCONF += --cpu=athlon64 --arch=x86_64
- else # !WIN64
- FFMPEGCONF+= --cpu=i686 --arch=x86
- endif
- else # !Windows
- FFMPEGCONF += --enable-pthreads
- endif
- # Build
- PKGS += ffmpeg
- ifeq ($(call need_pkg,"libavcodec >= 52.25.0 libavformat >= 52.30.0 libswscale"),)
- PKGS_FOUND += ffmpeg
- endif
- $(TARBALLS)/ffmpeg-$(HASH).tar.gz:
- $(call download,$(FFMPEG_SNAPURL))
- .sum-ffmpeg: $(TARBALLS)/ffmpeg-$(HASH).tar.gz
- $(warning Not implemented.)
- touch $@
- ffmpeg: ffmpeg-$(HASH).tar.gz .sum-ffmpeg
- rm -Rf $@ $@-$(HASH)
- mkdir -p $@-$(HASH)
- $(ZCAT) "$<" | (cd $@-$(HASH) && tar xv --strip-components=1)
- $(MOVE)
- .ffmpeg: ffmpeg
- cd $< && $(HOSTVARS) ./configure \
- --extra-ldflags="$(LDFLAGS)" $(FFMPEGCONF) \
- --prefix="$(PREFIX)" --enable-static --disable-shared
- cd $< && $(MAKE) install-libs install-headers
- touch $@