Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器。
nginx-rmtp-module是Nginx服務器的流媒體插件。
nginx通過rtmp模塊提供rtmp服務, ffmpeg推送一個rtmp流到nginx, 然后客戶端通過訪問nginx來收看實時視頻流。
有兩種方案:
(一)
1.下載nginx :http://nginx.org/
2.下載nginx-rmtp-module:https://github.com/arut/nginx-rtmp-module
3.配置nginx.conf
#nginx.conf rtmp {
server {
listen 1935;
chunk_size 4000; # TV mode: one publisher, many subscribers application wstv{ # enable live streaming live on; # record first 1K of stream record all;
record_path /tmp/av;
record_max_size 1K; # append current timestamp to each flv record_unique on; # publish only from localhost allow publish 127.0.0.1;
deny publish all; #allow play all; }
4.編譯
./configure --add-module=/path/to/nginx-rtmp-module make
make install
注意nginx版本在nginx (1.3.14 - 1.5.0)的configure 命令如下:
./configure –add-module=/path/to/nginx-rtmp-module –with-http_ssl_module
5.開啟服務器,測試
瀏覽器輸入localhost:80 
(二)
第一種方案需要我們自己繼承rtmp模塊,第二種集成方案比較簡單。
我們可以在http://nginx-win.ecsds.eu/下載已經集成好了的nginx。具體可以參考這里http://blog.csdn.net/lishimin1012/article/details/52130683
1、啟動:
C:\nginx-1.10.2>start nginx
或
C:\nginx-1.10.2>nginx.exe
注:建議使用第一種,第二種會使你的cmd窗口一直處于執行中,不能進行其他命令操作。
2、停止:
C:\nginx-1.10.2>nginx.exe -s stop
或
C:\nginx-1.10.2>nginx.exe -s quit
注:stop是快速停止nginx,可能并不保存相關信息;quit是完整有序的停止nginx,并保存相關信息。
3、重新載入Nginx:
C:\nginx-1.10.2>nginx.exe -s reload
當配置信息修改,需要重新載入這些配置時使用此命令。
推流拉流地址:rtmp://localhost:1935/ck/home
在桌面上放置一個名稱為ws2.avi的視頻文件
cd到桌面輸入:
ffmpeg -re -i ws2.avi -vcodec libx264 -acodec aac -f flv rtmp://localhost:1935/wstv/home

打開vlc播放器
輸入拉流地址:
rtmp://localhost:1935/ck/home

然后命令行回車,再點擊vlc的播放按鈕。

當然也可以在網頁端口寫點js代碼,也能支持播放。如果你的手機播放器支持rtmp流媒體協議也是可以播放的。
如果你覺得推一個流,拉一個流不過癮,直播可是同時有n多個流在推拉,接著你可以再開一個cmd,在推一個也是可以的。
1.如果希望將桌面錄制或者分享,可以使用命令行如下:
ffmpeg -f avfoundation -i "1" -vcodec libx264 -preset ultrafast -acodec libfaac -f flv rtmp://localhost:1935/wstv/home
這個只能夠推桌面。
2.如果需要桌面+麥克風,比如一般做遠程教育分享 命令行如下:
ffmpeg -f avfoundation -i "1:0" -vcodec libx264 -preset ultrafast -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/wstv/home
這個可以推桌面+麥克風。
3.如果需要桌面+麥克風,并且還要攝像頭拍攝到自己,比如一般用于互動主播,游戲主播,命令行如下
ffmpeg -f avfoundation -framerate 30 -i "1:0" \-f avfoundation -framerate 30 -video_size 640x480 -i "0" \-c:v libx264 -preset ultrafast \-filter_complex 'overlay=main_w-overlay_w-10:main_h-overlay_h-10' -acodec libmp3lame -ar 44100 -ac 1 -f flv rtmp://localhost:1935/wstv/home
這個可以推桌面+麥克風,并且攝像頭把人頭放在界面下面
FFmpeg常用基本命令
1.分離視頻音頻流
ffmpeg -i input_file -vcodec copy -an output_file_video //分離視頻流 ffmpeg -i input_file -acodec copy -vn output_file_audio //分離音頻流
2.視頻解復用
ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264ffmpeg –i test.avi –vcodec copy –an –f m4v test.264
3.視頻轉碼
ffmpeg –i test.mp4 –vcodec h264 –s 352*278 –an –f m4v test.264 //轉碼為碼流原始文件 ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352*278 –an –f m4v test.264 //轉碼為碼流原始文件 ffmpeg –i test.avi -vcodec mpeg4 –vtag xvid –qsame test_xvid.avi //轉碼為封裝文件
-bf B幀數目控制
-g 關鍵幀間隔控制
-s 分辨率控制
4.視頻封裝
ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file
5.視頻剪切
ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg //提取圖片 ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi //剪切視頻
-r 提取圖像的頻率
-ss 開始時間
-t 持續時間
6.視頻錄制
ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi
7.YUV序列播放
ffplay -f rawvideo -video_size 1920x1080 input.yuv
8.YUV序列轉AVI
ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi
9.常用參數說明:
主要參數:
i 設定輸入流
f 設定輸出格式
ss 開始時間
視頻參數:
b 設定視頻流量,默認為200Kbit/s-r 設定幀速率,默認為25
s 設定畫面的寬與高-aspect 設定畫面的比例
vn 不處理視頻-vcodec 設定視頻編解碼器,未設定時則使用與輸入流相同的編解碼器
音頻參數:
ar 設定采樣率
ac 設定聲音的Channel數
acodec 設定聲音編解碼器,未設定時則使用與輸入流相同的編解碼器an 不處理音頻
發表評論 取消回復