mirror of
				https://github.com/ossrs/srs.git
				synced 2025-03-09 15:49:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			112 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
ff_src_dir="../../3rdparty"
 | 
						|
 | 
						|
# the jobs to make ffmpeg
 | 
						|
if [[ "" == $SRS_JOBS ]]; then 
 | 
						|
    export SRS_JOBS="--jobs=1" 
 | 
						|
fi
 | 
						|
 | 
						|
ff_current_dir=$(pwd -P)
 | 
						|
ff_build_dir="${ff_current_dir}/_build"
 | 
						|
ff_release_dir="${ff_current_dir}/_release"
 | 
						|
echo "start to build the tools for transcode system:"
 | 
						|
echo "current_dir: ${ff_current_dir}"
 | 
						|
echo "build_dir: ${ff_build_dir}"
 | 
						|
echo "release_dir: ${ff_release_dir}"
 | 
						|
echo "SRS_JOBS: ${SRS_JOBS}"
 | 
						|
 | 
						|
mkdir -p ${ff_build_dir}
 | 
						|
mkdir -p ${ff_release_dir}
 | 
						|
 | 
						|
# yasm for libx264
 | 
						|
ff_yasm_bin=${ff_release_dir}/bin/yasm
 | 
						|
if [[ -f ${ff_yasm_bin} ]]; then 
 | 
						|
    echo "yasm is ok"
 | 
						|
else
 | 
						|
    echo "build yasm-1.2.0"
 | 
						|
    cd $ff_current_dir &&
 | 
						|
    rm -rf yasm-1.2.0 && unzip -q ${ff_src_dir}/yasm-1.2.0.zip &&
 | 
						|
    cd yasm-1.2.0 && ./configure --prefix=${ff_release_dir} &&
 | 
						|
    make && make install
 | 
						|
    ret=$?; if [[ 0 -ne ${ret} ]]; then echo "build yasm-1.2.0 failed"; exit 1; fi
 | 
						|
fi
 | 
						|
# add yasm to path, for x264 to use yasm directly.
 | 
						|
# ffmpeg can specifies the yasm path when configure it.
 | 
						|
export PATH=${PATH}:${ff_release_dir}/bin
 | 
						|
 | 
						|
# libfdk-aac
 | 
						|
if [[ -f ${ff_release_dir}/lib/libfdk-aac.a ]]; then
 | 
						|
    echo "libfdk_aac is ok"
 | 
						|
else
 | 
						|
    echo "build fdk-aac-0.1.3"
 | 
						|
    cd $ff_current_dir &&
 | 
						|
    rm -rf fdk-aac-0.1.3 && unzip -q ${ff_src_dir}/fdk-aac-0.1.3.zip &&
 | 
						|
    cd fdk-aac-0.1.3 && bash autogen.sh && ./configure --prefix=${ff_release_dir} --enable-static && make ${SRS_JOBS} && make install
 | 
						|
    ret=$?; if [[ 0 -ne ${ret} ]]; then echo "build fdk-aac-0.1.3 failed"; exit 1; fi
 | 
						|
fi
 | 
						|
 | 
						|
# lame-3.99
 | 
						|
if [[ -f ${ff_release_dir}/lib/libmp3lame.a ]]; then
 | 
						|
    echo "libmp3lame is ok"
 | 
						|
else
 | 
						|
    echo "build lame-3.99.5"
 | 
						|
    cd $ff_current_dir &&
 | 
						|
    rm -rf lame-3.99.5 && unzip -q ${ff_src_dir}/lame-3.99.5.zip &&
 | 
						|
    cd lame-3.99.5 && ./configure --prefix=${ff_release_dir} --enable-static && make ${SRS_JOBS} && make install
 | 
						|
    ret=$?; if [[ 0 -ne ${ret} ]]; then echo "build lame-3.99.5 failed"; exit 1; fi
 | 
						|
fi
 | 
						|
 | 
						|
# speex-1.2rc1
 | 
						|
if [[ -f ${ff_release_dir}/lib/libspeex.a ]]; then
 | 
						|
    echo "libspeex is ok"
 | 
						|
else
 | 
						|
    echo "build speex-1.2rc1"
 | 
						|
    cd $ff_current_dir &&
 | 
						|
    rm -rf speex-1.2rc1 && unzip -q ${ff_src_dir}/speex-1.2rc1.zip &&
 | 
						|
    cd speex-1.2rc1 && ./configure --prefix=${ff_release_dir} --enable-static && make ${SRS_JOBS} && make install
 | 
						|
    ret=$?; if [[ 0 -ne ${ret} ]]; then echo "build speex-1.2rc1 failed"; exit 1; fi
 | 
						|
fi
 | 
						|
 | 
						|
# x264 core.157
 | 
						|
if [[ -f ${ff_release_dir}/lib/libx264.a ]]; then
 | 
						|
    echo "x264 is ok"
 | 
						|
else
 | 
						|
    echo "build x264"
 | 
						|
    cd $ff_current_dir &&
 | 
						|
    rm -rf x264-snapshot-20181116-2245 && unzip -q ${ff_src_dir}/x264-snapshot-20181116-2245.zip &&
 | 
						|
    cd x264-snapshot-20181116-2245 && 
 | 
						|
    ./configure --prefix=${ff_release_dir} --disable-opencl --bit-depth=all \
 | 
						|
        --enable-static --disable-avs  --disable-swscale  --disable-lavf \
 | 
						|
        --disable-ffms  --disable-gpac --disable-cli && 
 | 
						|
    make ${SRS_JOBS} && make install
 | 
						|
    ret=$?; if [[ 0 -ne ${ret} ]]; then echo "build x264 failed"; exit 1; fi
 | 
						|
fi
 | 
						|
 | 
						|
# ffmpeg-4.1
 | 
						|
if [[ -f ${ff_release_dir}/bin/ffmpeg ]]; then
 | 
						|
    echo "ffmpeg-4.1 is ok"
 | 
						|
else
 | 
						|
    echo "build ffmpeg-4.1"
 | 
						|
    cd $ff_current_dir &&
 | 
						|
    rm -rf ffmpeg-4.1 && unzip -q ${ff_src_dir}/ffmpeg-4.1.zip &&
 | 
						|
    echo "remove all so to force the ffmpeg to build in static" &&
 | 
						|
    rm -f ${ff_release_dir}/lib/*.so* &&
 | 
						|
    echo "export the dir to enable the build command canbe use." &&
 | 
						|
    export ffmpeg_exported_release_dir=${ff_release_dir} &&
 | 
						|
    cd ffmpeg-4.1 && 
 | 
						|
    ./configure \
 | 
						|
        --enable-gpl --enable-nonfree \
 | 
						|
        --yasmexe=${ff_yasm_bin} \
 | 
						|
        --prefix=${ff_release_dir} --cc= \
 | 
						|
        --enable-static --disable-shared --disable-debug \
 | 
						|
        --extra-cflags='-I${ffmpeg_exported_release_dir}/include' \
 | 
						|
        --extra-ldflags='-L${ffmpeg_exported_release_dir}/lib -lm -ldl' \
 | 
						|
        --disable-ffplay --disable-ffprobe --disable-doc \
 | 
						|
        --enable-postproc --enable-bzlib --enable-zlib --enable-parsers \
 | 
						|
        --enable-libx264 --enable-libmp3lame --enable-libfdk-aac --enable-libspeex \
 | 
						|
        --enable-pthreads --extra-libs=-lpthread \
 | 
						|
        --enable-encoders --enable-decoders --enable-avfilter --enable-muxers --enable-demuxers && 
 | 
						|
    make ${SRS_JOBS} && make install
 | 
						|
    ret=$?; if [[ 0 -ne ${ret} ]]; then echo "build ffmpeg failed"; exit 1; fi
 | 
						|
fi
 |