作者原創(chuàng)原押,轉(zhuǎn)載請聯(lián)系作者
作者將以系列文章進行解析Nginx-Rtmp模塊代碼,地址為nginx-rtmp-module蹦漠,本文介紹Nginx-Rtmp的模塊編譯脱衙、加載、運行等方面傀蓉。此部分主要有3步需要執(zhí)行,遵守nginx相關(guān)的約定即可职抡,大體如下:
- 將下載的Rtmp代碼放入nginx/src文件下葬燎,如nginx/src/rtmp
- 新建Rtmp的conf文件,位于新建的rtmp文件下繁调,如nginx/src/rtmp/conf萨蚕。而conf文件的撰寫就是三段式靶草,定義ngx_addon_name, 添加module, 添加src蹄胰,設置相關(guān)變量。示例如下:
ngx_addon_name="ngx_rtmp_module"
CORE_MODULES="$CORE_MODULES
ngx_rtmp_module \
ngx_rtmp_core_module \
ngx_rtmp_cmd_module \
ngx_rtmp_codec_module \
ngx_rtmp_access_module \
ngx_rtmp_record_module \
ngx_rtmp_live_module \
ngx_rtmp_play_module \
ngx_rtmp_flv_module \
ngx_rtmp_mp4_module \
ngx_rtmp_netcall_module \
ngx_rtmp_relay_module \
ngx_rtmp_exec_module \
ngx_rtmp_auto_push_module \
ngx_rtmp_notify_module \
ngx_rtmp_log_module \
ngx_rtmp_limit_module \
ngx_rtmp_hls_module \
ngx_rtmp_dash_module \
ngx_rtmp_cfms_module \
"
HTTP_MODULES="$HTTP_MODULES \
ngx_rtmp_stat_module \
ngx_rtmp_control_module \
"
NGX_ADDON_DEPS="$NGX_ADDON_DEPS \
$ngx_addon_dir/ngx_rtmp_amf.h \
$ngx_addon_dir/ngx_rtmp_bandwidth.h \
$ngx_addon_dir/ngx_rtmp_cmd_module.h \
$ngx_addon_dir/ngx_rtmp_codec_module.h \
$ngx_addon_dir/ngx_rtmp_eval.h \
$ngx_addon_dir/ngx_rtmp.h \
$ngx_addon_dir/ngx_rtmp_version.h \
$ngx_addon_dir/ngx_rtmp_live_module.h \
$ngx_addon_dir/ngx_rtmp_netcall_module.h \
$ngx_addon_dir/ngx_rtmp_play_module.h \
$ngx_addon_dir/ngx_rtmp_record_module.h \
$ngx_addon_dir/ngx_rtmp_relay_module.h \
$ngx_addon_dir/ngx_rtmp_streams.h \
$ngx_addon_dir/ngx_rtmp_bitop.h \
$ngx_addon_dir/ngx_rtmp_proxy_protocol.h \
$ngx_addon_dir/hls/ngx_rtmp_mpegts.h \
$ngx_addon_dir/dash/ngx_rtmp_mp4.h \
"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS \
$ngx_addon_dir/ngx_rtmp.c \
$ngx_addon_dir/ngx_rtmp_init.c \
$ngx_addon_dir/ngx_rtmp_handshake.c \
$ngx_addon_dir/ngx_rtmp_handler.c \
$ngx_addon_dir/ngx_rtmp_amf.c \
$ngx_addon_dir/ngx_rtmp_send.c \
$ngx_addon_dir/ngx_rtmp_shared.c \
$ngx_addon_dir/ngx_rtmp_eval.c \
$ngx_addon_dir/ngx_rtmp_receive.c \
$ngx_addon_dir/ngx_rtmp_core_module.c \
$ngx_addon_dir/ngx_rtmp_cmd_module.c \
$ngx_addon_dir/ngx_rtmp_codec_module.c \
$ngx_addon_dir/ngx_rtmp_access_module.c \
$ngx_addon_dir/ngx_rtmp_record_module.c \
$ngx_addon_dir/ngx_rtmp_live_module.c \
$ngx_addon_dir/ngx_rtmp_play_module.c \
$ngx_addon_dir/ngx_rtmp_flv_module.c \
$ngx_addon_dir/ngx_rtmp_mp4_module.c \
$ngx_addon_dir/ngx_rtmp_netcall_module.c \
$ngx_addon_dir/ngx_rtmp_stat_module.c \
$ngx_addon_dir/ngx_rtmp_control_module.c \
$ngx_addon_dir/ngx_rtmp_relay_module.c \
$ngx_addon_dir/ngx_rtmp_bandwidth.c \
$ngx_addon_dir/ngx_rtmp_exec_module.c \
$ngx_addon_dir/ngx_rtmp_auto_push_module.c \
$ngx_addon_dir/ngx_rtmp_notify_module.c \
$ngx_addon_dir/ngx_rtmp_log_module.c \
$ngx_addon_dir/ngx_rtmp_limit_module.c \
$ngx_addon_dir/ngx_rtmp_bitop.c \
$ngx_addon_dir/ngx_rtmp_proxy_protocol.c \
$ngx_addon_dir/hls/ngx_rtmp_hls_module.c \
$ngx_addon_dir/dash/ngx_rtmp_dash_module.c \
$ngx_addon_dir/hls/ngx_rtmp_mpegts.c \
$ngx_addon_dir/dash/ngx_rtmp_mp4.c \
$ngx_addon_dir/cfms/ngx_rtmp_cfms_module.c \
$ngx_addon_dir/cfms/ngx_rtmp_cfms_transcode.c \
$ngx_addon_dir/cfms/ngx_rtmp_cfms_relay.c \
"
CFLAGS="$CFLAGS -I$ngx_addon_dir"
USE_OPENSSL=YES
如果你需要對rtmp模塊做定制奕翔,比如增刪模塊裕寨,那此處需要做相應修改。
- 編譯時加上rtmp模塊派继,主要分兩步:
1 生成makefile宾袜,示例代碼如下:
auto/configure --prefix=/usr/local/rtmp --sbin-path=sbin/rtmp --conf-path=conf/cfms.conf --add-module=src/rtmp
2 編譯連接安裝,此部分參考nginx手冊,此處不在贅述驾窟。值得一提的是在進行編譯完成后庆猫,在nginx/obj/ngx_modules.c文件中全局變量ngx_module_t *ngx_modules[] 將會增加上rtmp各個模塊,而在nginx啟動和后續(xù)消息處理時绅络,此變量是依次為主線依次進行(詳情后續(xù)文章會講解)月培,示例代碼如下:
ngx_module_t *ngx_modules[] = {
&ngx_core_module,
&ngx_errlog_module,
&ngx_conf_module,
&ngx_rtmp_module,
&ngx_rtmp_core_module,
&ngx_rtmp_cmd_module,
&ngx_rtmp_codec_module,
&ngx_rtmp_access_module,
&ngx_rtmp_record_module,
&ngx_rtmp_live_module,
......
本文只是做準備工作,后面著重分析rtmp模塊代碼恩急,同時會附帶講解nginx框架相關(guān)的知識