请问各位用过memfile的大虾

sunshine_djh 2002-05-31 11:18:14
我到现在都还不明白为什么要用memfile来播放文件,用RenderFile()不是可以直接播放吗?若是从网上接收数据,每次接收一帧,那也应该创建一个Source Filter才能播放呀?memfile到底有什么优势?
还有memfile中CMemStream和CMemReader我怎么也看不懂,希望能得到各位高手指点。
...全文
130 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunshine_djh 2002-06-10
  • 打赏
  • 举报
回复
分数太少,请大家不要介意。
jimconrad 2002-06-06
  • 打赏
  • 举报
回复
"实时播放网络中接收的数据用dshow来播放和用ddraw或是drawdib相比dshow有什么优势可言?"

To achieve the throughput necessary for streaming video and audio, DirectShow uses DirectDraw® and DirectSound® to render data efficiently to the system's sound and graphics cards.
(摘自dxshow文档)

dxshow是基于dxdraw和dxsound的一套多媒体播放解决方案。dxdraw和dxsound负责影音输出,dxshow负责数据传输和解码。如同http协议和tcp协议之间的关系一样,或者基于mfc开发的程序和mfc的关系一样。我不知道http和tcp协议相比有什么优势,正如不知道dxshow和dxdraw比起来有什么优势一样;二者所处的软件结构的层次不同,功能也不同,没有可比性。
levinson 2002-06-06
  • 打赏
  • 举报
回复
你所说的“优势”是跟谁比啊?!memfile只是一个很简单的source filter的范例啊,甚至都没有完整的写成通用组件。反复问让我有点纳闷ing
levinson 2002-06-06
  • 打赏
  • 举报
回复
memfile仅仅是一个例子。什么优势不优势的,不懂?!
sunshine_djh 2002-06-06
  • 打赏
  • 举报
回复
是不是memfile主要优势是可以一帧一帧的播放,要是在网络上边接收数据边实时播放的话,memfile是最佳选择,是吗?

但是,实时播放网络中接收的数据用dshow来播放和用ddraw或是drawdib相比dshow有什么优势可言?
liz22 2002-06-04
  • 打赏
  • 举报
回复
memfile播放实时采集的图象延时最少也有1秒,有没有其他方法可以降低延时呢?我以前好像在那看到说DirectX8SDK中有个ball的例子效果较好,可我不会用,谁知道啊?
capboy 2002-06-03
  • 打赏
  • 举报
回复
如果,你使用RendFile()(或者直接使用mediaplay来模拟)来播放一个远程文件的话(不是局域网的共享性质的),你会发现需要等待很长的时间,才出图像,那是因为他会把整个文件下载完毕在播放.而你修改memfile的程序可以完成边下载,边播放.这个就是为什么修改他,而不使用mediaplay的控件的原因.
memfile确实是有局限.我在"网络播放器"也说了这个问题.他本身是为了播放文件.不是为了时时的视频流的,我想大家在播放文件的时候不会关注到底延时的多少吧?好像意义不大...
如果想应用在直播的地方,最好使用其他的方法.这个只是一个不好的替代方法而已.
一般是自己做压缩,解压,效果才会好的.
capboy 2002-06-03
  • 打赏
  • 举报
回复
播放网络文件啊...呵呵...你可以使用http协议来获得数据,直接播放网站的数据什么的功能啊.
sunshine_djh 2002-06-03
  • 打赏
  • 举报
回复
capboy,“memfile确实是有局限.我在"网络播放器"也说了这个问题.他本身是为了播放文件.不是为了时时的视频流的”,那为什么称之为“网络播放器”?
lifu 2002-06-03
  • 打赏
  • 举报
回复
xingtian713(行天)兄的关于“那个CMemStream类其实生成的就是一个source filter”的讲法我不是很理解。
我私下里认为CMemStream继承于CAsyncStream,而CAsyncStream是一个是规范我们的流使其更像的从文件中来的一个接口。而继承与CAsyncReader的CAsyncFilter更像是一个source filter。不过我也糊里糊度的,希望大家多指点
大家多讨论讨论,就都明白了
xingtian713 2002-06-02
  • 打赏
  • 举报
回复
那个CMemStream类其实生成的就是一个source filter
sunshine_djh 2002-06-02
  • 打赏
  • 举报
回复
哪个asynbase.lib到底是实现什么功能的?
sunshine_djh 2002-06-02
  • 打赏
  • 举报
回复
可是到底在哪个地方建立了source filter?
sunshine_djh 2002-06-02
  • 打赏
  • 举报
回复
那个asynbase.lib到底是实现什么功能的呢?
jimconrad 2002-06-01
  • 打赏
  • 举报
回复
显然不行。你可以向capboy要他的那份程序。你搜一搜旧贴,关键字"memfile"
xingtian713 2002-06-01
  • 打赏
  • 举报
回复
capboy他改写的那个例子,只是模拟网络环境,通过独立线程不停的从mpg文件中读取,然后写入缓冲区中,他的缓冲区算法其实是有一些问题的,我测试过,效率很低,而且播放过程中延迟太大,不适合改造成网络播放器
sunshine_djh 2002-06-01
  • 打赏
  • 举报
回复
哎呀,问错了,memfile不支持接收网络数据并播放,是不是capboy改写的那个支持?
我也没看见他在程序中创建source filter呀?
sunshine_djh 2002-06-01
  • 打赏
  • 举报
回复
那个程序我有,可是不能接收网络数据为什么capboy还称之为“网络播放器”?
sunshine_djh 2002-05-31
  • 打赏
  • 举报
回复
接收网络数据也可以直接用memfie吗?要是不改写memfile可以直接用吗?
jimconrad 2002-05-31
  • 打赏
  • 举报
回复
代码分析先看其它程序如何调用被分析代码的,即这个类的外部接口和使用方法,调用流程。然后再逐个看外部接口的内部实现。然后看内部隐藏的程序结构。
加载更多回复(1)

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧