我有一个函数可以像这样添加Image
文件流:
//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)
基本上您已经知道如何将下载的内容转换为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()
返回的流。
基本的.NET框架中有没有 Video
类,因为视频是一个复杂的主题。如果你想处理它,你应该研究一些框架/库,并且必须要学习异步处理和流。
更新:如果您可以使用框架的当前版本,则可能对使用HttpClient.GetStreamAsync感兴趣。这不会消耗你所有的记忆。如果你想编辑视频数据,你还需要一个专门用于视频编辑的框架。