C# rtsp 轉碼rtmp nginx踩下的坑


       最近有一個項目, 進行步態識別的時候,同時需要顯示攝像的實時畫面。對於 Winform 顯示畫面,之前針對 rtmp 流的時候,是先寫一個HTML 網頁加載視頻流,然后在IIS上發布,將地址直接賦值給winform中 WebBrowser 控件的Url值即可。

 this.webBrowser1.Url = new Uri("http://192.168.0.217:8063/player.html");

針對HTML部分,網上有很多開源的Demo,已封裝好,沒啥值得研究的事情。本來順順利利,而現在是海康原生的 rtsp 流,Winfrom 沒啥好的解決方案,於是首先想到如何將 rtsp 流轉成rtmp流 。於是乎采坑之路就此開始。首先是下載ffmpeg ,然后搭建nginx 服務器。進行配置,再在dos界面執行相關指令,看起來很簡單,實際上坑賊多。針對 ffmpeg 來說,還很簡單,直接下載即可,然后將exe的同級目錄的路徑拷貝到配置變量中 。再管理員身份打開cmd后,執行 ffmpeg -version 出現長串字符即為成功

 

重點是nginx服務器的配置。 之前沒聽過這個,雖然網上很多相關的帖子,五花八門。很多人給的教程不全,或者上來就是改代碼。對於小白來說確實不知所雲。在嘗試了多個版本之后,找到了一個比較靠譜的帖子,這里小小感謝下,Windows下用FFmpeg+nginx+rtmp搭建  ,按照步驟下來,nginx 還是沒有啟動,最后百度,在nginx-win-rtmp.conf 文件中,需要加入rtmp的信息,紅字部分

events {
worker_connections 8192;
# max value 32768, nginx recycling connections+registry optimization =
# this.value * 20 = max concurrent connections currently tested with one worker
# C1000K should be possible depending there is enough ram/cpu power
# multi_accept on;
}

rtmp {
server {
listen 1935;
chunk_size 4000;
application live {
live on;
     }
  }
}

 

加入之后,仍然無法啟動,查看log發現是默認的80端口被占用,於是乎按照網上小伙伴絕大多數給的說法,先查詢這些80端口被那些程序占用,執行命令: netstat -aon|findstr "80"  ,然后記錄下PID,然后依次在進程中查看PID,找到源頭,最后關閉這些萬惡的源頭。

一瞅,發現這么多的80端口列表,很多還是不能關閉的,於是乎這條路又斷了,后來一項,把端口改成其他的數字不就可以。於是忽,再次進入 nginx-win.conf、nginx-win-rtmp.conf 中將server中 listen 值由 80改成84 后,再次執行命令

  dos界面,管理員進入nginx.exe同級目錄后,執行 nginx.exe -c conf\nginx-win-rtmp.conf 后,終於成功了,在任務管理器中發現了nginx 的進程。這里nginx啟動好以后,接下來就是執行推流任務。同樣用管理員身份進入cmd,執行

ffmpeg -i "rtsp://admin:admin@192.168.0.246:554/Streaming/Channels/1?transportmode=unicast" -f flv -r 25 -s 640x360 -an  rtmp://localhost:1935/live/room 

注意,這里有兩個坑,一個是必須要管理員打開cmd,還有一個是后面的  -an rtmp://localhost:1935/live/room(自行編輯) ,和前面的是一條完整的命令,很多帖子寫的是兩行,這樣直接粘貼過去的話,同樣執行失敗。最后成功時,界面如下

這個會一直往下跑,代表着一直在推 啊推啊流,(不能關閉)這樣一番操作之后,rtsp流就成功的轉換為了rtmp流。於是乎winform界面就可以操作此流進行播放.......

這個只是小小的研究一下,正常環境肯定不能這樣進行測試,賊難用,后來用了其他的第三方dll插件庫引用來處理

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM