delphi - 如何使用 DSPack 渲染 MemoryStream 中的视频?

标签 delphi video directshow dspack

我能够在 Delphi 2010 中使用 TFilterGraph 和 TVideoWindow 从文件系统渲染视频。我想从 MemoryStream 而不是直接从文件系统渲染视频。概念如下:

  1. 将视频存储在数据库 blob 字段中。
  2. 将 blob(视频)读入 MemoryStream。
  3. 使用 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/

相关文章:

Delphi - GLScene - 根据图像调整 Sprite 大小

video - 自定义 DirectShow 源过滤器 - 动态分辨率更改

c# - 如何获取已打开连接的套接字 ID/句柄/描述符? (.NET,C++,德尔福)

ios - 如何在 delphi ios 应用程序中显示循环进度?

delphi - 函数应该返回一条记录还是一个指针?

directshow - 如何避免使用 GMFBridge 编写非 I 帧

c++ - Directshow 渲染流 "the parameter is incorrect"

audio - 将 wav 和 mp4 与 ffmpeg 合并时音视频同步漂移缓慢

android - 使用FFMPEG4ANDROID压缩视频后视频不清晰

api - YouTube API和视频标签