前端Web瀏覽器基於Flash如何實時播放監控視頻畫面(三)之使用ffmpeg‘推流’

本片文章只是起到拋磚引玉的作用,能從頭到尾走通就行,並不做深入研究。爲了讓文章通俗易懂,儘量使用白話描述。

0x001: 下載ffmpeg

開源免費的推流軟件有很多,這裏以 ffmpeg 爲例。ffmpeg沒有可視化界面,如果覺得ffmpeg不好用,當然也可以使用OBS,這款軟件有操作界面,比較友好。


下載後解壓,無需安裝可直接使用,至於環境變量 配不配 都可以,區別是配了以後在使用CMD命令窗口調用ffmpeg時會方便一點,我這裏沒配。

0x002: 單元測試推流

爲了減少出錯概率,容易排查錯誤原因,在上一步驟的流媒體服務器環境搭建完成後 '首次推流時' 需要驗證這個服務器的RTMP模塊是否能正常訪問。

將本地視頻推流至RTMP流媒體服務器,找到ffmpeg.exe所在的文件,鼠標右鍵 '在此處打開命令窗口',敲入:

1 ffmpeg -re -i "C:\Users\Administrator\Desktop\test.mp4" -f flv "rtmp://localhost:1935/mytv/test"

 


其中"C:\Users\Administrator\Desktop\test.mp4"爲視頻文件所在磁盤的目錄,"rtmp://localhost:1935/mytv/test"爲RTMP協議地址。


這裏重點解釋一下RTMP地址,rtmp爲協議名稱,localhost爲協議地址,1935爲開放端口號,mytv爲nginx根目錄/conf/nginx.conf內的rtmp模塊application 後的 mytv(可以根據自己的需求改,但要互相對應),test爲自定義名稱,可以理解爲房間ID,如rtmp://localhost:1935/mytv/test1或rtmp://localhost:1935/mytv/1001

之後敲回車,會輸出以下信息,黃色圈起來的是當前ffmpeg配置信息和視頻的元數據信息以及相應的轉碼信息,如下圖


若推流成功,此CMD窗口內紅色方框圈起來的的INFO會一直不停的輸出滾動。如下圖這樣:


使用VLC播放此地址,觀察是否能正常播放,下圖左側在實時推流,下圖右側在實時播放(若不能播放,說明上一步驟的流媒體服務器環境搭建的有問題,需要自己排查)


0x003: 正式推流

這裏以海康監控RTSP流爲例來演示推流

1 ffmpeg -i "rtsp://admin:[email protected]:554/h264/ch1/sub/av_stream" -vcodec copy -acodec copy -f flv "rtmp://localhost:1935/mytv/test1"

推流成功後,同樣可以使用VLC播放此地址,觀察是否能正常播放。

經測試,生產環境下的ffmpeg,在保證RTSP流正規且穩定的前提下,使用時其實還是挺穩定的。
下圖是使用ffmpeg推海康的RTSP流至搭建的RTMP服務器,可以看出,推了大約307小時後停止了,原因是廠房斷電導致RTSP流不通導致。


0x004: 遺留問題

因爲要轉碼推流的監控比較多,8個監控想要使用ffmpeg全部推流到RTMP服務器那就得需要開8個CMD窗口,這樣的壞處就是在系統的任務欄佔據了比較大的空間。將來監控的數量還有可能會擴充,16個,32個......,那這樣以來使用 CMD命令窗口的方式 用ffmpeg來推流的方案 似乎有點不可行。

關於這個遺留問題,暫且解決辦法是 通過設置任務欄進行相同程序合併隱藏,如果你有什麼更好的解決方案,歡迎指出,不吝賜教,THANKS!


0x005: 下一步

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章