C#推送RTMP到SRS經過VLC進行取流播放!!

     前面一篇文章簡單的介紹了下如何利用SRS自帶的播放地址進行觀看RTMP直播流,也就是說是使用SRS的內置demo進行Test,可是進行視頻直播確定不可能使用那樣的去開發,不開源的東西確定很差用。因爲在研究的過程當中不多關於C#方面的資料,大部分都是本身慢慢磨出來的。以爲那些剛開始入門的人頗有幫助,因此決定貼出來,方便那些剛入門的學者,由於畢竟有些資料寫的太專業,並且有些剛入門的雖然說寫的很詳盡,可是沒有一個完整的概念,很難理解,本文着重講解下如何使用C#進行編碼推送RTMP至服務器,以及取流播放。讓剛入門的菜鳥一看就懂。linux

  1.準備材料:VMware Workstation 12 Player或更高版本(用於搭建Ubuntu)、Ubuntu(linux環境) 、SRS(linux下搭建的服務器)、VLC(播放器)或者ffplay、FFMPEG。git

  2. 語言:C#;github

  3.工具:VS2015ubuntu

  4.能夠參考的資料:https://github.com/ossrs/srs  SRS服務器搭建。瀏覽器

  前面第4點已經給出了github的git地址,請你們在搭建好ubuntu(關於如何搭建ubuntu請參考個人前一篇)以後,開機使用內置的瀏覽器進行下載,以下圖所示:服務器

  

   使用過github的人不須要多廢話,能夠經過git的方式,或者直接點擊【Download ZIP】的方式下載到ubuntu上,而後最重要的,也是其餘人資料都是輕描淡寫的步驟很關鍵:異步

    1.從官網這裏指的是(https://github.com/ossrs/srs)這邊git或者下載下來保存在ubuntu上。(git地址:https://github.com/ossrs/srs.git)工具

    2.獲取以後要進行編譯(不少資料寫編譯僅僅是列出一條指令,並不說明是在什麼環境下,什麼地方進行編譯,由於根本沒資料參考也沒接觸過這個東西只能本身磨,因此花了整整2天時間才磨透)這個對初學者很是重要。學習

        在ubuntu下打開下載好的文件,而後打開文件夾:本人下載的是srs-2.0-b4》trunk,而後比較關鍵的一步,不少資料也不說清楚是怎麼編譯的,對於沒接觸過的初學者來說難度很大;空白處右鍵:出現【在終端打開(T)】而後開始編譯,使用命令:./configure && make然         後回車,回車完成以後有提示輸入密碼就輸入密碼(可能會看不見輸入的密碼,無論它)。而後再回車,繼續編譯,耐心等待它編譯完成,編譯完成以後再啓動服務器SRS.網站

    3.啓動命令:scripts/run.sh而後回車,固然這條指令必需要明確路徑,我是在第2條的基礎上進行啓動的。

    4.至此服務SRS就已經編譯而且完成啓動了。接下來就開始準備另外一個工具FFMPEG進行視頻推送。

    5.到官方網站:https://ffmpeg.zeranoe.com/builds/  根據本身的系統下載相應的版本。(速度稍微有點慢,耐心等待完成)。

    6.下載完成以後打開文件夾bin目錄下會有三個可執行文件分別是ffmpeg.exe/ffpaly.exe/ffprobe.exe,本文着重介紹推流跟播放。

    7.接下來就是C#編寫調用ffmpeg.exe了,網上的參考資料很是少,仍是本身編譯的經過了,必定要跟你們分享,代碼以下:

 

 1  /// <summary>
 2         /// 推流至服務器SRS
 3         /// </summary>
 4         /// <param name="sender"></param>
 5         /// <param name="e"></param>
 6         private void button1_Click(object sender, EventArgs e)
 7         {
 8             //第一步檢測讀取的地址是否爲空
 9             if (this.textBox1.Text.Trim() != "")
10             {
11                 //第二步讀取後綴名是否爲flv
12                 //string path = Path.GetExtension(this.textBox1.Text.Trim());
13                 //if (path != "flv")
14                 //{
15                     //第三步檢測服務器SRS是否正常開啓
16                     string strpath = System.IO.Directory.GetCurrentDirectory(); //文件名
17                     //string strpath = "d:\\個人文檔\\visual studio 2015\\Projects\\SRS_RTMP\\SRS_RTMP\\bin\\Debug\\ffmpeg.exe";
18 
19 
20                     Process p = new Process();//建立進程
21                     p.StartInfo.FileName = @"" + strpath + "" + "\\ffmpeg.exe";//ffmpeg的絕對路徑能夠自由更改
22                     p.StartInfo.Arguments = "-i " + this.textBox1.Text.Trim().ToString() + " -vcodec copy -acodec copy -f flv -y rtmp://192.168.61.128/live/livestream";//ffmpeg參數
23                     //F:\ffmpeg-20170214-8fa18e0-win64-static\bin\ffmpeg.exe -i F:\mytest.flv 
24                     p.StartInfo.UseShellExecute = false;//不使用操做系統外殼程序啓動線程
25                     p.StartInfo.RedirectStandardError = true;//把外部程序錯誤輸出寫到StandardError流中
26                     p.StartInfo.CreateNoWindow = true; //設置置不顯示示窗口
27                     //p.ErrorDataReceived += new DataReceivedEventHandler(Output);//外部程序(這裏是FFMPEG)輸出流時候產生的事件
28                     p.Start();//啓動線程
29                     p.BeginErrorReadLine();//開始異步讀取
30                     p.WaitForExit();//阻塞等待進程結束
31                     p.Close();//關閉進程
32                     p.Dispose();//釋放資源
33                     MessageBox.Show("推流完成,推流的同時可使用播放器進行觀看!");
34 
35                     ffplay();
36 
37                 //}
38                 //else
39                 //{
40                 //    MessageBox.Show("請先進行轉碼後再進行推送!");
41                 //}
42             }
43             else
44             {
45                 MessageBox.Show("先打開文件後再進行推流!");
46             }
47         }

 

 

   8.這是一個簡單的Winform推流代碼,但願對你們有幫助,推流完成以後,咱們就能夠開始使用第三方播放器VLC取流進行播放,這邊暫時還沒使用內置播放器ffpaly進行播放。效果圖以下:

 

  9.至此推流完成,能夠實時進行推流播放,目前還在學習ffmpeg中,還有不少須要研究,這邊只是作一個備註做用以防忘記。但願對剛入門的全部菜鳥們有個更好的理解。

相關文章
相關標籤/搜索