2

我可以在 Delphi 2010 中使用 TFilterGraph 和 TVideoWindow 从文件系统渲染视频。我想从 MemoryStream 渲染视频,而不是直接从文件系统渲染视频。这是概念:

  1. 将视频存储在数据库 blob 字段中。
  2. 将 blob(视频)读入 MemoryStream。
  3. 使用 DSPack 渲染 blob(视频)。

如何告诉 FilterGraph 使用 MemoryStream 而不是文件?

4

1 回答 1

2

Ciuly 的网络角发布了一个工作演示,回答了您问题的最后一部分: http ://www.ciuly.com/delphi/multimedia/using-directshow-with-dspack-play-multimedia-content-from-stream/

至于其他两部分,加载和读取数据库 blob 字段:

//add a file stream to a blob field
MemoryStream:= TMemoryStream.Create;
try
  MemoryStream.LoadFromFile(VideoFileName);
  MemoryStream.Position:= 0;
  ClientDataSet1.Edit;
  ClientDataSet1YOURBLOBFIELD.LoadFromStream(MemoryStream);
  ClientDataSet1.Post;
finally
  MemoryStream.Free;
end;

//read a memory stream from a blob field
MemoryStream:= TMemoryStream.Create;
try
  ClientDataSet1YOURBLOBFIELD.SaveToStream(MemoryStream);
  MemoryStream.Position:= 0;
  //do your magic with the memory stream here
finally
  MemoryStream.Free;
end; 
于 2013-01-06T20:47:47.073 回答