2011-01-14 37 views
0

我想從靜態圖像創建RTSP/h264視頻流,並將其合併到我的.NET應用程序中。到目前爲止,我已經發現了兩個可能的方式來做到這一點:在.NET平臺上創建RTSP視頻流

  1. 使用的ffmpeg/ffserver的,但我需要編譯ffserver的窗戶上,然後依靠它...我不一定要依靠在外部應用程序

  2. 使用LIVE555(http://www.live555.com)庫,但他們沒有任何.NET庫,所以我需要花費一些努力使其與其餘的工作我的.NET應用程序。

你可以評論#1,#2或哪一個更好。在.NET中調用RTSP服務器有更快的方法嗎?如果有一個需要時間的固定解決方案,我不介意花時間在開發時間,但最好能有一些我們可以快速處理的東西,用於原型和演示。

謝謝

回答

1

是否在飛行中做這方面的需求,或者您可以將圖片上傳,然後視頻創建,然後就成爲了H264視頻流?我只需從代碼中的命令行中調用FFMpeg並輸出視頻,如果可以的話就跳過RTSP。如果你使用qt-faststart,你也可以獲得可搜索的流,而不需要首先下載整個MP4。

+0

這是需要在飛行中,因爲該流將需要實時24/7。靜態圖像用於生成流,並且圖像每隔幾分鐘左右更新一次。 – Goro 2011-01-14 20:20:44

1

1您可以使用已編譯的Windows ffmpeg/ffserver。只需谷歌它,你可以找到很多預編譯的Windows庫。

2對於live555,您可以在VC6,YS2003或VS2008中構建庫。請參閱鏈接如何在窗口s上配置和構建代碼。編譯它非常簡單,它的1小時工作。 *這些庫是用C/C++(非託管代碼)編寫的,以便在託管代碼中使用這些庫,您可能需要編組或編寫某種類型的接口。

0

雖然這不是一個permament溶液,要做到這一點的最簡單的方法迄今是使用.NET進程庫嵌入VLC成程序:

Dim p As New ProcessStartInfo 
p.FileName = "vlc" 'Assuming vlc.exe is already in the path variable 
p.Arguments = "vlc CLI options for setting up the stream" 
p.WindowStyle = ProcessWindowStyle.Hidden 
Process.Start(p) 
1

H264的轉碼部分將是該困難的部分。對於.Net而言,X264的封裝並不多。

在你有一種編碼方式之後,你仍然需要打包數據以使其通過Rtp工作,這是Rtsp用來將媒體發送到每個客戶端的方式。這意味着將數據放入這是由RFC在這種情況下http://tools.ietf.org/html/rfc6184

確定我有一個RtspClient和RtspServer在C#中,可以讓你的個人數據包,所以你可以讓他們到解碼器以正確的方式RtpPackets。

還爲它CodeProject上的文章在這裏 http://www.codeproject.com/Articles/507218/Managed-Media-Aggregation-using-Rtsp-and-Rtp

VLC是因爲它可以做轉碼,併爲您提供RTSP流爲客戶在同一時間消耗另一種選擇。

退房的VLC文件http://www.videolan.org/doc/streaming-howto/en/ch05.html

如果你有什麼事讓我知道!