一、安装依赖和下载源码
$sudo apt-get install cmake
$sudo apt-get install libssl-dev libsdl-dev libavcodec-dev libavutil-dev ffmpeg
$git clone -b 6.0 --depth 1 ZLMediaKit: 实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
$cd ZLMediaKit
#下载第三方源码
$git submodule update --init
修改 src/Rtmp/RtmpPlayerImp.h
bool onCheckMeta(const AMFValue &val) override {
_rtmp_src = dynamic_pointer_cast<RtmpMediaSource>(_pMediaSrc);
if (_rtmp_src) {
_rtmp_src->setMetaData(val);
_set_meta_data = true;
}
if(!_delegate) {
_delegate.reset(new RtmpDemuxer);
_delegate->loadMetaData(val);
}
return true;
}
二、更改CMakelist编译成动态库
修改ZLMediaKit/CMakelist
第8行,取消屏蔽 set(CMAKE_BUILD_TYPE "Release")
行 133: add_library(mpeg STATIC ${src_mpeg})
行 156: add_library(mov STATIC ${src_mov})
行 157: add_library(flv STATIC ${src_flv})
行 189: add_library(zltoolkit STATIC ${ToolKit_src_list})
行 190: add_library(zlmediakit STATIC ${MediaKit_src_list})
将STATIC 改为SHARED
行 133: add_library(mpeg SHARED ${src_mpeg})
行 156: add_library(mov SHARED ${src_mov})
行 157: add_library(flv SHARED ${src_flv})
行 189: add_library(zltoolkit SHARED ${ToolKit_src_list})
行 190: add_library(zlmediakit SHARED ${MediaKit_src_list})
cd ZLMediaKit
mkdir build
cd build
cmake ..
make -j4
编译后安装路径位于 源码根目录 release/linux/Release
三、运行程序
首先运行 守护程序 位于源码根目录 release/linux/Release
./MediaServer -d &
然后运行测试程序
./test_pusher
四、独立编译测试程序 test_pusher.cpp ,注意test_pusher.cpp 需要放在编译选项前面
编译后的库文件从release/linux/Release 拷贝至 /home/nvidia/ZLMediaKitPro/ZLMediaKitInstall/lib
cp -arf release/linux/Release/lib*.so /home/nvidia/ZLMediaKitPro/ZLMediaKitInstall/lib
编译后的server文件MediaServer 从release/linux/Release 拷贝至 /home/nvidia/ZLMediaKitPro/ZLMediaKitInstall/bin
cp -arf release/linux/Release/MediaServer /home/nvidia/ZLMediaKitPro/ZLMediaKitInstall/bin
拷贝源码中的头文件 和 第三方源码中的头文件 拷贝至 /home/nvidia/ZLMediaKitPro/ZLMediaKitInstall/include/
cp -arf src/* /home/nvidia/ZLMediaKitPro/ZLMediaKitInstall/include/
cp -arf 3rdpart/ZLToolKit/src/* /home/nvidia/ZLMediaKitPro/ZLMediaKitInstall/include/
删除源文件
find . -name "*.cpp" -type f -print -exec rm -rf {} \;
编译测试程序
g++ test_pusher.cpp -o test_pusher -std=c++11 -O3 -DNDEBUG \
-I/usr/local/Xlza/ZLMediaKit/include -L/usr/local/Xlza/ZLMediaKit/lib \
-lzlmediakit -lzltoolkit -lmpeg -lmov -lflv -lssl