2012-10-25 95 views
4

我可以通過C#Winform應用程序在Windows 7 64位機器上流式傳輸rtsp。這是我使用的庫 - VLCDotNet這裏是代碼示例播放RTSP流:將RTSP存儲到文件位置

LocationMedia media = new LocationMedia(@"rtsp://192.168.137.73:554/live.sdp"); 
vlcControl1.Media = media; 
vlcControl1.Play(); 

我想流的文件存儲在我的電腦上點擊一個按鈕,並停止與另一個相同按鈕。我如何實現這一目標?

回答

8

下面是代碼:

Vlc.DotNet.Core.Medias.MediaBase media1 
= new Vlc.DotNet.Core.Medias.PathMedia("rtsp://192.168.137.73:554/live.sdp"); 

media.AddOption(":sout=#transcode{vcodec=theo,vb=800, 
scale=1,acodec=flac,ab=128,channels=2,samplerate=44100}:std{access=file,mux=ogg, 
dst=D:\\123.mp4}"); 

VlcControl control = new VlcControl(); 
control.Media = media; 
control.Play(); 
+0

你好,這個代碼的存儲RTSP流的mp4文件?我有一個項目,我收到H264有效負載的RTP數據包,這個代碼對我有用嗎? –

+0

@ user1662033:是的,它將rtsp流存儲爲mp4文件。你可以試試這個代碼並檢查它是否適合你。 – Vinshi

+0

等待..是不是本地流的代碼?在我的情況下,我有一臺服務器在我的局域網上流RTP給我..該文件是一個.mkv文件(流路徑是「rtsp://192.168.30.11/MyVideo.mkv」)。是代碼好嗎? –

1
VlcContext.StartupOptions.IgnoreConfig = true; 
VlcContext.StartupOptions.LogOptions.LogInFile = true; 
VlcContext.StartupOptions.LogOptions.ShowLoggerConsole = true; 
VlcContext.StartupOptions.LogOptions.Verbosity = VlcLogVerbosities.Debug; 

// Disable showing the movie file name as an overlay 
// VlcContext.StartupOptions.AddOption("--no-video-title-show");     
// VlcContext.StartupOptions.AddOption("--no-audio"); 
VlcContext.StartupOptions.AddOption("--rtsp-tcp"); //this line was important to make this work 
+0

請問您能否在文中解釋這是如何解決這個問題的? – Magnilex

+0

要使rtsp協議正常工作,您需要輸入以下內容VlcContext.StartupOptions.AddOption(「 - rtsp-tcp」);爲了調試,我添加了這些調試語句,然後您可以添加Vinshi發佈的答案。 –

1

由於Vlc.DotNet.Core 2.1.62的,要做到這一點的方法是使用額外的opts PARAM的.Play對VLC控制。

var opts = new string[] { @":sout=file/ogg:C:\video.ogg" }; 
vlc.MediaPlayer.Play(new Uri(videoURI), opts); 

`