RTMP添加到NGINX

作者原創(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)的知識

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末杉畜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子衷恭,更是在濱河造成了極大的恐慌此叠,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件随珠,死亡現(xiàn)場離奇詭異灭袁,居然都是意外死亡,警方通過查閱死者的電腦和手機窗看,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門茸歧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人烤芦,你說我怎么就攤上這事举娩。” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵铜涉,是天一觀的道長智玻。 經(jīng)常有香客問我,道長芙代,這世上最難降的妖魔是什么吊奢? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮纹烹,結(jié)果婚禮上页滚,老公的妹妹穿的比我還像新娘。我一直安慰自己铺呵,他們只是感情好裹驰,可當我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著片挂,像睡著了一般幻林。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上音念,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天沪饺,我揣著相機與錄音,去河邊找鬼闷愤。 笑死整葡,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的讥脐。 我是一名探鬼主播遭居,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼攘烛!你這毒婦竟也來了魏滚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤坟漱,失蹤者是張志新(化名)和其女友劉穎鼠次,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芋齿,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡腥寇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了觅捆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赦役。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖栅炒,靈堂內(nèi)的尸體忽然破棺而出掂摔,到底是詐尸還是另有隱情术羔,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布乙漓,位于F島的核電站级历,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏叭披。R本人自食惡果不足惜寥殖,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望涩蜘。 院中可真熱鬧嚼贡,春花似錦、人聲如沸同诫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剩辟。三九已至掐场,卻和暖如春往扔,著一層夾襖步出監(jiān)牢的瞬間贩猎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工萍膛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓忿等,卻偏偏與公主長得像减俏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子串塑,可洞房花燭夜當晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容