2017-05-05 49 views
0

我有添加Image文件流這樣的功能:C#添加視頻文件流

//sourceImage is a url for an image 
public Stream AddImageToStream(string sourceImage) 
{ 
    try 
    { 
     using (WebClient webClient = new WebClient()) 
     { 
      byte[] data = webClient.DownloadData(sourceImage); 
      using (MemoryStream mem = new MemoryStream(data)) 
      { 
       using (var yourImage = Image.FromStream(mem)) 
       { 
        Image img = yourImage; 
        var ms = img.ToStream(ImageFormat.Png); 
        img.Dispose(); 
        return ms; 
       } 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
} 

我無法找到C#Video類。

如何才能實現這個功能的視頻文件?

+0

圖像和視頻都是字節數組,上面的代碼沒有區別。如果你沒有性能要求。 –

+0

爲什麼你創建一個'Image'對象而不是直接返回'mem'?應該和'ms'一樣。 – ZoolWay

+0

@ZoolWay這是因爲我已經添加了一些代碼來添加舊功能中的圖像水印,我刪除了無關的代碼併發布我的答案。 – user3748973

回答

0

基本上你已經知道如何打開下載的內容爲MemoryStream

public Stream DownloadToStream(string url) 
{ 
    using (var webClient = new System.Net.WebClient()) 
    { 
     byte[] data = webClient.DownloadData(url); 
     var ms = new System.IO.MemoryStream(data); 
     return ms; 
    } 
} 

但是,這將需要的視頻或任何適合到內存中,就沒有進步的處理並沒有什麼異步的。當你用它完成你的操作時,你也應該返回流Dispose()

There is noVideo在基本的.NET框架中的類,因爲視頻是一個複雜的話題。如果你想處理它,你應該研究一些框架/庫,肯定要學習異步處理和流。

更新:如果您可以使用當前版本的框架,您可能有興趣使用HttpClient.GetStreamAsync。這不會消耗你所有的記憶。如果你想編輯視頻數據,你仍然需要一個專門的視頻編輯框架。