1. 程式人生 > >ffmpeg+nginx建立rtmp伺服器,播放攝像頭流

ffmpeg+nginx建立rtmp伺服器,播放攝像頭流

好文章,http://blog.fs-linux.org/?p=137

先轉載,然後再動手實踐看看

live555可以建立rtsp這個大夥都知道,ffserver+ffmpeg也可以建立一個實時rtsp服務,那麼rtmp呢?好多人會首選red5,al'right,這裡用的是nginx,下面記錄一下使用nginx建立rtmp的全過程

首先下載一份nginx的rtmp的module

?
1 git clone https://github.com/arut/nginx-rtmp-module.git

下載好nginx-rtmp-module以後,需要將ginx-rtmp編譯進nginx

?
1 2 3 4 cd nginx ./configure --prefix=/usr/local/nginx/ --add-module=/root/nginx-rtmp-module --with-http_ssl_module make make install

這樣,就將nginx-rtmp-module編譯進nginx裡面,並安裝到/usr/local/nginx裡面了
接下來配置一下nginx的配置檔案既可
在nginx-rtmp-module中可以看到nginx配置檔案的參考

?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 [[email protected]
nginx-rtmp-module]
# ls AUTHORS                   ngx_rtmp_auto_push_module.c  ngx_rtmp_control_module.c  ngx_rtmp_handler.c       ngx_rtmp_netcall_module.c  ngx_rtmp_relay_module.c  test config                    ngx_rtmp_bandwidth.c         ngx_rtmp_core_module.c     ngx_rtmp_handshake.c     ngx_rtmp_netcall_module.h  ngx_rtmp_relay_module.h  TODO
doc                       ngx_rtmp_bandwidth.h         ngx_rtmp_enotify_module.c  ngx_rtmp_init.c          ngx_rtmp_notify_module.c   ngx_rtmp_send.c hls                       ngx_rtmp.c                   ngx_rtmp_eval.c            ngx_rtmp_limit_module.c  ngx_rtmp_play_module.c     ngx_rtmp_shared.c LICENSE                   ngx_rtmp_cmd_module.c        ngx_rtmp_eval.h            ngx_rtmp_live_module.c   ngx_rtmp_play_module.h     ngx_rtmp_stat_module.c ngx_rtmp_access_module.c  ngx_rtmp_cmd_module.h        ngx_rtmp_exec_module.c     ngx_rtmp_live_module.h   ngx_rtmp_receive.c         ngx_rtmp_streams.h ngx_rtmp_amf.c            ngx_rtmp_codec_module.c      ngx_rtmp_flv_module.c      ngx_rtmp_log_module.c    ngx_rtmp_record_module.c   README.md ngx_rtmp_amf.h            ngx_rtmp_codec_module.h      ngx_rtmp.h                 ngx_rtmp_mp4_module.c    ngx_rtmp_record_module.h   stat.xsl [[email protected] nginx-rtmp-module]# ls test/ dump.sh  ffstream.sh  nginx.conf  play.sh  README.md  rtmp-publisher  www [[email protected] nginx-rtmp-module]# ls test/rtmp-publisher/ player.html  publisher.html  README.md  RtmpPlayer.mxml  RtmpPlayer.swf  RtmpPublisher.mxml  RtmpPublisher.swf  swfobject.js [[email protected] nginx-rtmp-module]# ls test/www bg.jpg  index.html  jwplayer  jwplayer_old  record.html [[email protected] nginx-rtmp-module]#

當然,如果只為了測試rtmp,完全可以將test中的rtmp放在/usr/local/nginx/conf/中,記得要備份/usr/local/nginx/conf下的nginx.conf
將nginx.conf中的內容修改如下:

?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 worker_processes  1; error_log  logs/error.log debug; events { worker_connections  1024; } rtmp { server { listen 1935; application myapp { live on; } } } http { server { listen      80; location /stat { rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { root /usr/local/nginx/html/nginx-rtmp-module/; } location /control { rtmp_control all; } location /rtmp-publisher { root /usr/local/nginx/html/nginx-rtmp-module/test; } location / { root /usr/local/nginx/html/nginx-rtmp-module/test/www; } } }

配置完成之後,可以啟動nginx

?
1 /usr/local/nginx/sbin/nginx

nginx從此啟動完成
接下來試一下

?
1 ffmpeg  -f video4linux2  -s 1280x720 -i /dev/video0 -vcodec libx264 -preset ultrafast -vprofile baseline -vlevel 1.0  -s 640x480 -b:v 800k -r 25  -pix_fmt yuv420p -f flv rtmp://192.168.0.194/myapp/mystream

然後ffmpeg的程序會顯示如下

?
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ffmpeg version N-54918-g11cb697 Copyright (c) 2000-2013 the FFmpeg developers built on Jun 19 2013 08:54:07 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-3) configuration: --disable-yasm --enable-libx264 --enable-gpl libavutil      52. 40.100 / 52. 40.100 libavcodec     55. 19.100 / 55. 19.100 libavformat    55. 12.102 / 55. 12.102 libavdevice    55.  3.100 / 55.  3.100 libavfilter     3. 81.102 /  3. 81.102 libswscale      2.  4.100 /  2.  4.100 libswresample   0. 17.103 /  0. 17.103 libpostproc    52.  3.100 / 52.  3.100 Input #0, video4linux2,v4l2, from '/dev/video0': Duration: N/A, start: 686.347441, bitrate: 147456 kb/s Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 1280x720, 147456 kb/s, 10 fps, 10 tbr, 1000k tbn, 1000k tbc [libx264 @ 0x2e63660] frame MB size (40x30) > level limit (99) [libx264 @ 0x2e63660] DPB size (1 frames, 1200 mbs) > level limit (0 frames, 396 mbs) [libx264 @ 0x2e63660] MB rate (30000) > level limit (1485) [libx264 @ 0x2e63660] using cpu capabilities: none! [libx264 @ 0x2e63660] profile Constrained Baseline, level 1.0 [libx264 @ 0x2e63660] 264 - core 133 r2334M a3ac64b - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=3 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=250 keyint_min=25 scenecut=0 intra_refresh=0 rc=abr mbtree=0 bitrate=800 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0 Metadata: encoder         : Lavf55.12.102 Stream #0:0: Video: h264 (libx264) ([7][0][0][0] / 0x0007), yuv420p, 640x480, q=-1--1, 800 kb/s, 1k tbn, 25 tbc Stream mapping: Stream #0:0 -> #0:0 (rawvideo -> libx264) Press [q] to stop, [?] for help frame= 1469 fps=9.7 q=30.0 size=   14868kB time=00:02:31.44 bitrate= 804.3kbits/s   

將nginx配置檔案中需要的對應的目錄放在nginx下面

?
1 2 3 mkdir /usr/local/nginx/html/nginx-rtmp-module cp /root/nginx-rtmp-module/test /usr/local/nginx/html/nginx-rtmp-module/ cp /root/nginx-rtmp-module/stat.xsl /usr/local/nginx/html/nginx-rtmp-module/
?
1 2 ls /root/nginx-rtmp-module/test/www/ bg.jpg        index.html    jwplayer/     jwplayer_old/ record.html  

可以看到,在nginx-rtmp-module/test/www/下面使用的是jwplayer,這個player是一個AS建立出來的flash player

然後訪問地址http://192.168.0.194/rtmp-publisher/player.html,就可以播放了

相關推薦

ffmpeg+nginx建立rtmp伺服器播放攝像頭

好文章,http://blog.fs-linux.org/?p=137 先轉載,然後再動手實踐看看 live555可以建立rtsp這個大夥都知道,ffserver+ffmpeg也可以建立一個實時rtsp服務,那麼rtmp呢?好多人會首選red5,al'right,這裡用的是

Mac搭建nginx+rtmp伺服器通過ffmpeg實現視訊推

最近在研究關於直播方面的技術,中間遇到很多坑,在此記錄一下,以免再次跳坑 1.安裝Homebrew 開啟終端, 檢視是否已經安裝了Homebrew, 直接終端輸入命令 man brew 如果Mac已經安裝了, 會顯示一些命令的幫助資訊. 此時 輸入Q退出即可, 直接進

如何建立 SVN 伺服器並搭建自己的 SVN 倉庫

本文轉自劉奇雲的部落格  地址:https://www.cnblogs.com/liuqiyun/p/6856997.html SVN是一個廣泛使用的版本控制系統,在日常工作中有廣泛的應用空間,比如文件管理,我們就可以搭建一個 SVN 倉庫,日常需要歸類儲存的文件統統上傳到倉庫中,那如

使用uwsgi和nginx搭建的伺服器修改程式碼後如何自動/手動過載程式碼?

寫在前面 在預設設定下,uwsgi本身不會立即載入修改後的檔案,這是為了效率起見。如果你有修改程式碼後需要立即在伺服器上reload的需求,則在uwsgi的ini檔案中加入如下修改(不建議): py-autoreload = 1 如果我們僅僅只是在開發環境除錯

CentOS 建立SVN 伺服器並且自動同步到WEB 目錄

一、安裝Subversion #yum install subversion     二,基本的SVN伺服器配置 1,新建一個目錄用於儲存SVN所有檔案# mkdir /home/svn 2,新建一個版本倉庫# svnadmin create /home/sv

使用nginx搭建rtmp伺服器

一、軟體需求 1、nginx原始碼包  下載地址:http://nginx.org/。筆者下載的是1.10.3。 2、pcre原始碼包。這是一個正則表示式庫。nginx會用到這個開源庫來做正則匹配。很多軟體都會引用,比如php引擎編譯的時候也會用到。 3、nginx-rtmp-m

ffmpeg+nginx 實現拉流轉碼播放

1,客戶需求,編碼器,IPTV 水療娛樂裝置 2,軟體需要。ffmpeg常用命令連結 , vlc ,nginx環境下。 3,再給測試視訊的連結。 可以播放的直播地址 4,看張圖,現場環境。 5,這裡就是 為了編碼器的播出地址,經過ffmpeg 放到本

mac下利用ffmpeg+nginx搭建直播伺服器的總結

最近自己一直在研究直播相關的技術,前一陣子用了騰訊雲簡單的實現了直播,騰訊雲實現起來很方便,而且SDK對一些關鍵問題的處理也做得很好,開發者直接在騰訊雲平臺上申請認證後便可進行騰訊雲直播的測試開發了.

Windows10下nginxrtmp伺服器搭建

nginx-1.7.11.3-Gryphon 2. 下載伺服器狀態檢查程式 stat.xsl(注:直接clone到nginx-1.7.11.3-Gryphon目錄下) 3. 配置檔案 conf\nginx-win-rtmp.conf 內容如下:(注:用記事本開

ffmpeg+nginx+海康威視網路攝像頭rtsp在手機端和電腦端實現直播

原料:海康威視攝像頭,nginx伺服器,ffmpeg。首先海康威視攝像頭,它的rtsp資料流的地址為:rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream說明:userna

windows下搭建基於nginxrtmp伺服器

Windows機器配置:Windows7旗艦版 64位Intel(R) Core(TM)i5-2520 CPU @2.50GHz 2.50 GHz記憶體: 4GB​1. 下載 nginx 1.7.11.3 Gryphon下載連結: http://nginx-win.ecsd

Nginx 作為代理伺服器載入JS檔案報錯net::ERR_CONTENT_LENGTH_MISMATCH

檢視nginx 日誌發現報錯 [[email protected] logs]# tail error.log 2016/11/11 15:04:20 [crit] 8655#0: *21 open() "/usr/local/nginx/

FFmpeg+Nginx搭建RTMP直播推服務

    Nginx是優秀的開源並且可以新增外掛的服務端,其中就有開源的RTMP外掛nginx-rtmp-module實現了RTMP推流服務。     專案地址為: https://github.com/arut/nginx-rtmp-module 搭建思路:    

三、ESP8266LUA開發之建立TCP伺服器實現socket通訊控制繼電器串列埠伺服器客戶端收發資料小感悟

8266做伺服器,實現TCP通訊 注,實際燒錄的時候會因為註釋過多造成燒錄不進去的情況,這個時候需要刪除註釋! 先來測試8266建立伺服器,並分得IP 燒錄時,先燒wifi.lua,然後再燒init.lua。 init.lua

Linux建立FTP伺服器新增使用者設定使用者獨立目錄的過程及遇到的問題

1、查詢linux伺服器是否已經安裝過vsftpd服務; rpm -qa|grep vsftpd 解除安裝已經安裝服務命令:rpm -e vsftpd 2、未安裝,安裝vsftpd服務;

基於nginx搭建RTMP伺服器

安裝nginx 下載ngnix原始碼 git clone https://github.com/nginx/nginx.gi

SFTP檔案下載(由於SFTP有許可權設定本地ip又不固定所以為測試伺服器IP開通許可權把檔案下載到測試伺服器再用讀到本地)

1.工具類 import java.util.Properties; import org.apache.log4j.Logger; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; i

利用Nginx搭建RTMP視訊直播點播伺服器ffmpeg回看

#下面的server是在http的一級配置標籤下的#上面的註釋對懂nginx的人是廢話,但是如果你不熟悉nginx,建議認真看看http{...# 這裡有一些其他的配置 server { listen 80;#埠 server_name rtmp-server;#設定http

簡單直播實現(一:建立本地rtmp伺服器)Mac上搭建直播伺服器Nginx+rtmp

簡介 nginx是非常優秀的開源伺服器,用它來做hls或者rtmp流媒體伺服器是非常不錯的選擇,本人在網上整理了安裝流程,分享給大家並且作備忘。 步驟安裝 1、安裝Homebrow Homebrew簡稱brew,是Mac OSX上的軟體包管理工具,能在Mac中方便的安裝軟體

ffmpeg 實現RTSP/RTMP伺服器拉音視訊流儲存為h264和AAC

int my_av_bsf_filter(const AVBitStreamFilter *filter, AVPacket *pPacket, const AVCodecParameters *src) { int ret; AVBSFContext *ctx = NULL; if (!fi