ffmpeg在之前介紹過,是一個至關強大的工具,咱們此次利用它實現rtmp推流(最終推流地址統一爲rtmp://127.0.0.1:1935/live/123)。nginx
官方下載連接爲:http://ffmpeg.org/服務器
輸入下面的語句便可列出電腦的設備ide
ffmpeg -list_devices true -f dshow -i dummy工具
能夠看到我電腦裏面有USB2.0 PC CAMERA攝像頭和一個亂碼的麥克風測試
若是設備名稱有中文,會出現亂碼,想看設備原名,能夠去設備管理器中查看,又能夠利用第三方工具查看,推薦後者。code
好比使用graphedit,打開程序後 圖表-> 插入過濾器,就能夠看到相應的設備名orm
能夠發現可用設備爲USB2.0 PC CAMERA和麥克風 (2- USB2.0 MIC)視頻
cmd中輸入下面語句並回車(USB2.0 PC CAMERA爲攝像頭名稱)ip
ffplay -f dshow -i video="USB2.0 PC CAMERA" 開發
或者
ffplay -f vfwcap -i 0
若是成功彈出播放窗口,則表明設備可用,不然多是設備不可用或者設備被佔用
cmd中輸入下面語句便可查詢攝像頭信息
ffmpeg -list_options true -f dshow -i video="USB2.0 PC CAMERA"
USB2.0 PC CAMERA攝像頭信息
cmd中輸入下面語句便可查詢麥克風信息
ffmpeg -list_options true -f dshow -i audio="麥克風 (2- USB2.0 MIC)"
麥克風(2- USB2.0 MIC)信息
先進行簡單的本地視頻推流模擬,咱們在ffmpeg的目錄下放置一個視頻,而後cmd進入該目錄,把視頻推流至rtmp://127.0.0.1:1935/live/123(127.0.0.1:1935爲rtmp服務器地址、live爲nginx配置節點、123當作密鑰,推流拉流地址同樣便可播放),語句以下
ffmpeg.exe -re -i demo.wmv -f flv rtmp://127.0.0.1:1935/live/123
此時ffmpeg源源不斷的把視頻推流至服務器,若是地址沒錯,能夠利用vlc或其餘手段實現拉流,這裏就先不解釋如何拉流
接下來正式把對攝像頭進行推流,從前面咱們知道攝像頭名稱爲USB2.0 PC CAMERA,並且推流服務器ip爲127.0.0.1:1935,關鍵字爲live,因此cmd中輸入如下語句:
ffmpeg -f dshow -i video="USB2.0 PC CAMERA" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live/123
和本地視頻推流同樣,攝像頭拍到的畫面會實時推流出去(固然會有延遲並且如今是沒有聲音的),當地址正確時,能夠實現拉流
前面介紹了攝像頭畫面推流,但是沒有聲音,此次咱們把麥克風聲音推流出去,cmd中輸入下面語句
ffmpeg -f dshow -i audio="麥克風 (2- USB2.0 MIC)" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live/123
和前面差很少,聲音被推流出去了,經過vlc拉流能夠聽到錄製的聲音,但很明顯不會有畫面
終於到最激動人心的時刻了,咱們此次要實現同時推流攝像頭畫面與聲音,此時咱們的語句應該以下
ffmpeg -f dshow -i video="USB2.0 PC CAMERA" -f dshow -i audio="麥克風 (2- USB2.0 MIC)" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live/123
或者
ffmpeg -f dshow -i video="USB2.0 PC CAMERA":audio="麥克風 (2- USB2.0 MIC)" -vcodec libx264 -r 25 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://127.0.0.1:1935/live/123
很nice,和前面同樣,畫面與聲音源源不斷的被推流到服務器,接下來咱們就應該正式的開發拉流了