我能够在 Delphi 2010 中使用 TFilterGraph 和 TVideoWindow 从文件系统渲染视频。我想从 MemoryStream 而不是直接从文件系统渲染视频。概念如下:
- 将视频存储在数据库 blob 字段中。
- 将 blob(视频)读入 MemoryStream。
- 使用 DSPack 渲染 blob(视频)。
如何告诉 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;
关于delphi - 如何使用 DSPack 渲染 MemoryStream 中的视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14183497/