Nginx安裝和配置
下載nginx-1.19.3-http-flv 模塊預編譯包并解壓放在d盤,路徑就跟安裝步驟里說的一樣(如下圖),不然會有其他問題出現。
打開conf/nginx.conf
,查看RTMP和http相關的配置,確認端口號和路由名稱
ffpemg推流視頻
ffmpeg安裝
安裝步驟參考FFmpeg 超級詳細安裝與配置教程(Windows 系統),安裝包的位置不要有中文路徑,建議把原來的巨長的文件夾名重命名簡短一點
,官網下載需要魔法不然很慢但下下來的時長可以接受,我上傳的安裝包被自動設成VIP資源了需要的話可以留郵箱。。
視頻推流
安裝配置好后在終端(CMD)中輸入以下命令(同時按住win+R鍵左下角彈出輸入框,然后輸入cmd按回車就能打開終端)
ffmpeg -stream_loop -1 -i 你的視頻文件的路徑.mp4 -c:v libx264 -preset ultrafast -c:a aac -f flv rtmp://localhost/myapp/stream
這條命令的作用是把本地的 .mp4 文件進行無限循環播放,并將視頻流以 H.264 編碼、音頻流以 AAC 編碼,封裝成 FLV 格式后推送到 rtmp://localhost/myapp/stream 這個 RTMP 地址。
ffmpeg命令解釋
命令的基本格式如下
ffmpeg [全局選項] [輸入文件選項] -i 輸入文件 [輸出文件選項] 輸出文件或推流地址
- -stream_loop -1
此為全局選項,用于指定輸入文件的循環次數。-1 表示無限循環,也就是輸入的視頻文件會不斷循環播放,直至手動停止推流。這個選項也可以不要 - -i 你的視頻文件.mp4
這是輸入文件選項,-i 是指定輸入文件的標志,你的視頻文件.mp4 是要作為輸入的本地視頻文件名稱,注意如果終端沒有切到這個文件的所在的目錄下要加上文件所在的完整路徑(文件夾或者文件名一定不能有空格) - -c:v libx264
屬于輸出文件選項,-c:v 用于指定視頻編碼器,libx264 是常用的 H.264 視頻編碼器,它能將視頻流編碼成 H.264 格式。 - -preset ultrafast
同樣是輸出文件選項,-preset 用于設置編碼速度和壓縮比的平衡。ultrafast 是最快的預設,意味著編碼速度快,但可能會犧牲一定的視頻質量和壓縮率。 - -c:a aac
這是輸出文件選項,-c:a 用于指定音頻編碼器,aac 是常用的音頻編碼格式,可將音頻流編碼成 AAC 格式。 - -f flv
屬于輸出文件選項,-f 用于指定輸出文件的格式,flv 是 Flash Video 格式,常用于 RTMP 推流。 - rtmp://localhost/myapp/stream
這是推流地址,代表 RTMP 服務器的地址和流名稱。localhost 是本地服務器地址,myapp 是應用名稱,stream 是流名稱。
終端沒有報Error,持續顯示以下信息即表示正常推流了
查看推流視頻
通過VLC軟件播放RTMP流
使用VLC播放器(沒有這個軟件可以點擊去官網下載安裝),點擊媒體->打開網絡串流輸入你的推流地址然后點擊播放,如果能正常播放你的視頻則說明RTMP正常推流了
通過VLC軟件播放FLV流
同上一步操作 “打開網絡串流”,輸入 FLV 流的地址http://localhost:8080/live?port=1935&app=myapp&stream=stream&schema=rtmp
,然后點擊 “播放” 按鈕,注意這里的兩個端口號分別對應第一步中Nginx中的配置,8080是http服務的端口號,1935是RTMP的的端口號,后面的app、stream、schema這三個參數與推流地址rtmp://localhost/myapp/stream對應匹配,如果前一步中RTMP能正常播放那么這一步也是能正常播放的
通過web的video標簽播放
新建一個.txt文件,然后輸入以下代碼并保存。重名將.txt后綴改成.html,如果前一步中FLV流正常播放那么,雙擊這個html文件在瀏覽器打開就能看到視頻播放
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>FLV Stream Player</title>
</head><body><video width="640" height="480" controls><source src="http://localhost:8080/live?stream=myapp/stream.flv" type="video/flv">Your browser does not support the video tag.</video>
</body></html>
當然還可以通過js腳本把以上推流步驟封裝一鍵運行web項目,本篇純小白向所以不展開贅述,有需要后續會單開一篇在web項目里腳本實現的基礎demo