nginx視頻直播/點播服務(wù)干貨分享

近年互聯(lián)網(wǎng)直播業(yè)務(wù)非成娣悖火熱。我也研究了下狡赐,發(fā)現(xiàn)nginx上配置視頻直播點播也很容易實現(xiàn)窑业,特分享一下。

一枕屉、ubuntu14.04安裝nginx及nginx_rtmp_module擴展

nginx根據(jù)是否已安裝和安裝的方式不同常柄,有一下三種方式安裝及擴展安裝。

1.全新安裝nginx和nginx_rtmp_module擴展

#!/bin/shapt-get updateapt-get install -y gcc libpcre3 libpcre3-dev openssl libssl-dev make git libxml2 libxml2-dev libxslt-dev libgd2-xpm-dev geoip-database libgeoip-devcd/usr/local/src/gitclonehttps://github.com/arut/nginx-rtmp-module.gitwget -c? http://mirrors.sohu.com/nginx/nginx-1.9.14.tar.gztar zxvf nginx-1.9.14.tar.gzcdnginx-1.9.14/./configure --with-http_ssl_module --add-module=/usr/local/src/nginx-rtmp-modulemakemake installcd/usr/local/nginx/ln-s`pwd`/sbin/nginx /usr/sbin/nginx nginx -V wget http://www.*****.com/editor/attached/file/20160322/20160322112243_43972.txtmv 20160322112243_43972.txt /etc/init.d/nginxchmod +x /etc/init.d/nginxservice nginx restart

2.apt-get安裝過nginx的,需重新編譯安裝并添加nginx_rtmp_module擴展

#!/bin/shapt-get -y install dpkg-dev libxml2 libxml2-dev libxslt-dev libgd2-xpm-dev geoip-database libgeoip-dev libpcre3 libpcre3-dev libssl-dev? openssl? nginx -V 2>a nginx_config=`cat a |grep configure | cut-d':'-f2`nginx_version=`cat a|grep'nginx version'|cut-d'/'-f2 | cut-d' '-f1`rm-facd/usr/local/src/# apt-get install -y gitgitclonehttps://github.com/arut/nginx-rtmp-module.git#采用搜狐開源鏡像下載對應(yīng)的nginx版本# apt-get source nginxwget -c"http://mirrors.sohu.com/nginx/nginx-${nginx_version}.tar.gz"tar zxvf"nginx-${nginx_version}.tar.gz"cd"nginx-$nginx_version"echo"./configure${nginx_config}--add-module=/usr/local/src/nginx-rtmp-module"| shmake#強制覆蓋cp -rfp objs/nginx /usr/sbin/nginx#檢查是否錯誤/usr/sbin/nginx -t#重啟nginxservice nginx restartnginx -V

3.已經(jīng)編譯安裝過nginx的,可以直接添加nginx_rtmp_module擴展

找到安裝nginx的源碼根目錄搀擂,如果沒有的話下載新的源碼

我的安裝源碼根目錄 /usr/local/src/nginx-1.4.6

cd/usr/local/src/# apt-get install -y gitgitclonehttps://github.com/arut/nginx-rtmp-module.git nginx -V 2>a nginx_config=`cat a |grep configure | cut-d':'-f2`rm-facdnginx-1.4.6echo"./configure${nginx_config}--add-module=/usr/local/src/nginx-rtmp-module"| shmake#強制覆蓋cp -rfp objs/nginx /usr/sbin/nginx#檢查是否錯誤/usr/sbin/nginx -t#重啟nginxservice nginx restartnginx -V

二西潘、配置使用

編輯nginx的配置文件(/etc/nginx/nginx.conf或/usr/local/nginx/conf/nginx.conf)

1.在http節(jié)點外層添加一個rtmp節(jié)點,具體內(nèi)容如下:

rtmp{server{listen1935;chunk_size4096;max_connections100;#音視頻流上傳和播放地址都是 rtmp://你的IP/live/streamName#streamName自己是自定義的哨颂。applicationlive {liveon;recordoff;? ? ? ? }#這個是上傳地址 rtmp://你的IP:/hls/streamName2#直播的地址也是這個喷市,點播播放地址在下面applicationhls {liveon;hlson;#請先創(chuàng)建相應(yīng)目錄(mkdir -p /var/www/hls/ && chown -R www-data:www-data /var/www )hls_path/var/www/hls/;? ? ? ? }? ? }}

說明:

application 表示一個應(yīng)用

地址后面的streamName可以自己定義,點播時會在相應(yīng)目錄下生成類似 streamName.m3u8 和 streamName.ts 的文件威恼。

live on; 表示打開直播品姓。

hls on; 表示打開點播,會在服務(wù)器上生成臨時文件的沃测。

record off; 是關(guān)閉保存視頻的功能缭黔。

點播播放的地址是一個http協(xié)議的數(shù)據(jù)流地址。例如下面配置的http://你的IP:8080/hls/streamName2.m3u8 蒂破。

點播的文件默認是逐個生成的馏谨,又會逐個自動刪除。m3u8文件是一個動態(tài)的附迷。用vim可以查看惧互。

2.在下面的http節(jié)點內(nèi)部添加一個server節(jié)點哎媚,具體內(nèi)容如下:

#這個是點播播放地址 http://你的IP:8080/hls/streamName2.m3u8server{? ? ? ? listen8080;? ? ? ? index index.html;? ? ? ? root/var/www/hls/;? ? ? ? location /hls{? ? ? ? ? ? ? ? alias/var/www/hls/;types{? ? ? ? ? ? ? ? ? ? ? ? application/vnd.apple.mpegurl m3u8;? ? ? ? ? ? ? ? ? ? ? ? video/mp2t ts;? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? add_header Cache-Control no-cache;? ? ? ? }}

說明:

這個節(jié)點是配置的一個虛擬主機,目的是為了播放上面點播服務(wù)生成的視頻流喊儡。

url中streamName2是根據(jù)錄制推流的名字來的拨与。需要保持一致。

默認下,該地址有一定的時限行艾猜,需要每次都先確認一下买喧,服務(wù)器上是否存在該m3u8文件。

3.測試使用

a.推視頻流到服務(wù)器? ? (1).使用linux上ffmpeg工具模擬推流到服務(wù)器? ? 安裝ffmpeg工具apt-get-yinstallbuild-essentialgit-corecheckinstallyasmtexi2htmllibvorbis-devlibx11-devlibvpx-devlibxfixes-devzlib1g-devpkg-confignetcatlibncurses5-devlibfaac-devlibmp3lame-devlibx264-devFFMPEG_VERSION=2.3.3cd/usr/local/srcif[ ! -d"/usr/local/src/ffmpeg-${FFMPEG_VERSION}"];thensudowget"http://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2"sudotar-xjf"ffmpeg-${FFMPEG_VERSION}.tar.bz2"ficd"ffmpeg-${FFMPEG_VERSION}"./configure--enable-version3--enable-postproc--enable-libvorbis--enable-libvpx--enable-gpl--enable-nonfree--enable-pthreads--enable-libfaac--enable-libmp3lame--enable-libx264makecheckinstall--pkgname=ffmpeg--pkgversion="5:${FFMPEG_VERSION}"--backup=no--deldoc=yes--default

ffmpeg –version使用ffmpeg工具把本地的視頻文件模擬推送到服務(wù)器

ffmpeg -re -i/data/localFile.mp4-c copy -f flv rtmp://你的IP/live/streamName

這個命令會把本地的localFile.mp4模擬推入live直播流匆赃,然后可以通過 rtmp://你的IP/live/streamName地址觀看該直播淤毛。

ffmpeg -re -i /data/localFile.mp4 -ccopy-fflv /var/www/hls/streamName

這個命令會把本地的localFile.mp4模擬推入到hls應(yīng)用中,然后可以通過rtmp://你的IP/hls/streamName 地址觀看該直播算柳,也可以通過播放器打開http://你的IP:8080/hls/streamName.m3u8查看該視頻的點播

(2).Windows上使用一些專業(yè)工具推流到服務(wù)器

我是使用 銳動PC錄制/直播SDK(http://www.rdsdk.com/contrast...非打廣告]包中的demo來推流的低淡,這個可以免費使用且免安裝。

網(wǎng)上推薦的常見推流測試工具有 OBS, XSplit, FMLE 等瞬项。

推流的地址是 rtmp://你的IP/hls/streamName 或者 rtmp://你的IP/live/streamName

(3).自己編寫手機等設(shè)備的APP蔗蹋,錄制手機攝像頭捕捉到的頭像及麥克風(fēng)捕捉到的聲音,一起推送到服務(wù)器囱淋。

這類安卓或IOS的SDK也比較多猪杭。可自行開發(fā)妥衣。

b.使用播放器點播播放視頻

Windows和linux桌面版都可以是VLC播放器打開http://你的IP:8080/hls/streamName.m3u8這個地址觀看直播(這個播放器不支持rtmp直播播放胁孙?)

c.使用Web瀏覽器在網(wǎng)頁上播放直播視頻

編寫HTML頁面index.html:

HLS PlayerYour browser does not support HTML5 video.

修改IP,保存頁面至/var/www/hls/index.html中称鳞。

用蘋果設(shè)備訪問http://你的IP:8080/index.html就可以看到該直播了。

由于H5兼容性問題稠鼻,只能在蘋果設(shè)備上用瀏覽器訪問冈止。

如果想要其他設(shè)備都能訪問需做兼容處理。一般用flash嵌入網(wǎng)頁中去播放直播(rtmp://...)或點播(http://...xxx.m3u8)

d.使用nginx_rtmp_module擴展包內(nèi)文件來同時錄制和直播測試

在nginx_rtmp_module擴展包內(nèi)有測試文件,復(fù)制該文件夾內(nèi)的文件到站點根目錄(如/var/www/html)

cp -r /usr/local/src/nginx-rtmp-module/test/www/* /var/www/html;

修改index.html文件中rtmp的地址為 rtmp://你的IP/live/streamName

修改record.html文件中flashvars的streamer為 rtmp://你的IP/live 并改flashvars的file值為streamName

保存候齿。

使用瀏覽器同時打開兩個頁面 :

http://你的IP:8080/index.html(這個是直播觀看的地址)http://你的IP:8080/record.html(這個是直播錄像的地址熙暴,采用的是flash錄制電腦的攝像頭[請點擊允許])

三、其他

1.nginx-rtmp-module的配置請看Wikihttps://github.com/arut/nginx...

2.以上環(huán)境只是測試學(xué)習(xí)使用慌盯。公網(wǎng)上必須考慮權(quán)限安全周霉,網(wǎng)絡(luò)帶寬,視頻質(zhì)量等。

3.此類產(chǎn)品網(wǎng)絡(luò)上也比較多亚皂,例如阿里云基礎(chǔ)服務(wù)中就有視頻直播點播的功能俱箱。

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)灭必,非商業(yè)轉(zhuǎn)載請注明出處狞谱∧四。互聯(lián)網(wǎng)+時代,時刻要保持學(xué)習(xí)跟衅,攜手千鋒PHP,Dream It Possible孵睬。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市伶跷,隨后出現(xiàn)的幾起案子掰读,更是在濱河造成了極大的恐慌,老刑警劉巖叭莫,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蹈集,死亡現(xiàn)場離奇詭異,居然都是意外死亡食寡,警方通過查閱死者的電腦和手機雾狈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抵皱,“玉大人善榛,你說我怎么就攤上這事∩牖” “怎么了移盆?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長伤为。 經(jīng)常有香客問我咒循,道長,這世上最難降的妖魔是什么绞愚? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任叙甸,我火速辦了婚禮,結(jié)果婚禮上位衩,老公的妹妹穿的比我還像新娘裆蒸。我一直安慰自己,他們只是感情好糖驴,可當(dāng)我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布僚祷。 她就那樣靜靜地躺著,像睡著了一般贮缕。 火紅的嫁衣襯著肌膚如雪辙谜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天感昼,我揣著相機與錄音装哆,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛烂琴,可吹牛的內(nèi)容都是我干的爹殊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼奸绷,長吁一口氣:“原來是場噩夢啊……” “哼梗夸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起号醉,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤反症,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后畔派,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铅碍,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年线椰,在試婚紗的時候發(fā)現(xiàn)自己被綠了胞谈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出名党,到底是詐尸還是另有隱情债鸡,我是刑警寧澤饲漾,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏享扔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一植袍、第九天 我趴在偏房一處隱蔽的房頂上張望惧眠。 院中可真熱鬧,春花似錦于个、人聲如沸锉试。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拖云,卻和暖如春贷笛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宙项。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工乏苦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓汇荐,卻偏偏與公主長得像洞就,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子掀淘,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,440評論 2 359

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