Macコンパイルrtmpdump

4727 ワード

主にrtmpプッシュフローに使われています.この時間はライブ機能をしています.2016.05.27ピットから出ます.
rtmpdumpコンパイルのまとめについて
今日は仕事のために理解してコンパイルする必要があります.私はlinuxの基礎が弱いので、makefileについてはよく分かりません.招待状のリンクを参照:http://blog.csdn.net/ruglcc/article/details/7814546/ストレスがあってこそ動力があります.楽しいコンパイルの旅を始めましょう.
Macクロスコンパイルは2種類あります.
ps:クロスコンパイルとは、iOSプログラマにとってはまだ馴染みのないものです.クロスコンパイルとは
1、Xcodeが持参するコンパイルツールを使って、カタログを保存する.
/Appliations/Xcode.ap/Contents/Developer/usr/bin
2、Macコンパイラで編集し、カタログを保存する
//usr/bin
ソリューション:
ブログを見てください.このブログのdemoを修正してコンパイルできます.完璧です.http://blog.csdn.net/cjj198561/article/details/28955461
このブログも参考になります.http://www.cnblogs.com/fpzeng/p/3202344.html
以下は私の完全なステップです.
一、iOSプラットフォームでOpensslをコンパイルする
libratmplinkの場合はopensslが必要です.iOSでopensslをコンパイルします.以下のスクリプトを参照してください.https://github.com/x2on/OpenSSL-for-iPhone
1.1、コンパイルOpensslをダウンロードする
ダウンロード後にマスター/build-libssl.shスクリプトを実行しました.このスクリプトはi 386 x 86_になりました.64 armv 7 armv 7 s arm 64 tv_x 86_64 tv_arm 64バージョンが統合されています.
1.2、新規ディレクトリrtmp
コンパイルしたOpenSSL-for-inhone-masterディレクトリの下でlibとincludeを試験します.
二、iOSプラットフォームでrtmpをコンパイルする
2.1、まずlibratmpコードを取得する:
git clone git://git.ffmpeg.org/rtmpdump
コードをrtmpフォルダに置く
2.2、libtmpスクリプトをコンパイルする
#!/bin/sh

SDKVERSION="9.1" #  sdk  

CURRENTPATH=`pwd`
ARCHS="armv7 armv7s arm64"

LIBPATH="${CURRENTPATH}/lib" #   openssl    lib
INCLUDEPATH="${CURRENTPATH}/include" #   openssl       

# LIBRTMPREPO="Git://git.ffmpeg.org/rtmpdump"       
BUILDPATH="${CURRENTPATH}/build"
SRCPATH="${CURRENTPATH}/src"
LIBRTMP="librtmp.a"
#   Xcode        
DEVELOPER=`xcode-select -print-path`

if [ ! -d "$DEVELOPER" ]; then
echo "xcode path is not set correctly $DEVELOPER does not exist (most likely because of xcode > 4.3)"
echo "run"
echo "sudo xcode-select -switch "
echo "for default installation:"
echo "sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer"
exit 1
fi

# Check whether openssl has already installed on the machine or not.
# libcrypt.a / libssl.a

set -e
echo 'Check openssl installation'
if [ -f "${LIBPATH}/libcrypto.a" ] && [ -f "${LIBPATH}/libssl.a" ] && [ -d "${INCLUDEPATH}/openssl" ]; then
echo 'Openssl for iOS has already installed, no need to install openssl'
else
echo 'Openssl for iOS not found, will install openssl for iOS'
./build-libssl.sh
echo 'Succeeded to install openssl'
fi

# Download librtmp source code from git repository
# We assuem the user already installed git client.
echo 'Clone librtmp git repository'

# Remove the directory if already exist
rm -rf "${SRCPATH}/rtmpdump"

# git clone ${LIBRTMPREPO} src/rtmpdump
# cd "${SRCPATH}/rtmpdump/librtmp"
cd "${CURRENTPATH}/rtmpdump/librtmp"

LIBRTMP_REPO=""

for ARCH in ${ARCHS}
do
if [ "${ARCH}" == "i386" ];
then
PLATFORM="iPhoneSimulator"
else
PLATFORM="iPhoneOS"
fi
export CROSS_TOP="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer"
export CROSS_SDK="${PLATFORM}${SDKVERSION}.sdk"
export BUILD_TOOLS="${DEVELOPER}"

echo "Building librtmp for ${PLATFORM} ${SDKVERSION} ${ARCH}"
echo "Please wait..."

# add arch to CC=
#     librtmp     Xcode   ar,   Mac ar
sed -ie "s!AR=\$(CROSS_COMPILE)ar!AR=/usr/bin/ar!" "Makefile"
sed -ie "/CC=\$(CROSS_COMPILE)gcc/d" "Makefile"
echo "CC=\$(CROSS_COMPILE)gcc -arch ${ARCH}" >> "Makefile"

export CROSS_COMPILE="${DEVELOPER}/usr/bin/"
export XCFLAGS="-isysroot ${CROSS_TOP}/SDKs/${CROSS_SDK} -miphoneos-version-min=7.0 -I${INCLUDEPATH} -arch ${ARCH}"

if [ "${ARCH}" == "i386" ];
then
export XLDFLAGS="-L${LIBPATH} -arch ${ARCH}"
else
export XLDFLAGS="-isysroot ${CROSS_TOP}/SDKs/${CROSS_SDK} -miphoneos-version-min=7.0 -L${LIBPATH} -arch ${ARCH}"
fi
OUTPATH="${BUILDPATH}/librtmp-${PLATFORM}${SDKVERSION}-${ARCH}.sdk"
mkdir -p "${OUTPATH}"
LOG="${OUTPATH}/build-librtmp.log"

make SYS=darwin >> "${LOG}" 2>&1
make SYS=darwin prefix="${OUTPATH}" install >> "${LOG}" 2>&1
make clean >> "${LOG}" 2>&1

LIBRTMP_REPO+="${OUTPATH}/lib/${LIBRTMP} "
done

echo "Build universal library..."
lipo -create ${LIBRTMP_REPO}-output ${LIBPATH}/${LIBRTMP}

echo "Building done."
echo "Cleaning up..."

rm -rf ${SRCPATH}/rtmpdump
echo "Done."

tmpディレクトリの下にスクリプトを新規作成して実行すればいいです.