我可以在 Delphi 2010 中使用 TFilterGraph 和 TVideoWindow 从文件系统渲染视频。我想从 MemoryStream 渲染视频,而不是直接从文件系统渲染视频。这是概念:
- 将视频存储在数据库 blob 字段中。
- 将 blob(视频)读入 MemoryStream。
- 使用 DSPack 渲染 blob(视频)。
如何告诉 FilterGraph 使用 MemoryStream 而不是文件?
我可以在 Delphi 2010 中使用 TFilterGraph 和 TVideoWindow 从文件系统渲染视频。我想从 MemoryStream 渲染视频,而不是直接从文件系统渲染视频。这是概念:
如何告诉 FilterGraph 使用 MemoryStream 而不是文件?
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;