directshow的stop调用问题

daibo219 2002-01-09 03:55:16
在正常播放过程中,需要暂时停止播放,过一会再播放。发现如果是视频流,则很正常,如果是系统流,则再播放的时候会停顿(从停止到播放的时间)这段时间。因为我播放的是网络传来的MPEG-1系统流,暂停不能有效实现,请问,怎么解决这个问题?
...全文
110 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zlma 2002-01-14
  • 打赏
  • 举报
回复
daibo219 ,谢谢了。
我以前是自己写的mpeg1解码和回放(也是实现了网络数据流的播放),现在我也在研究如何用directshow写出更高效的代码,以后还要向你多多请教。
不过我觉得directshow在控制方面的确比不上自己写的代码,但是在其他方面都很不错。
daibo219 2002-01-11
  • 打赏
  • 举报
回复
我明明加了分,怎么没有?请教大侠,怎么加?是否加错了?
daibo219 2002-01-11
  • 打赏
  • 举报
回复
zlma(zlma) 兄,给你加分了。
如果有其他朋友能给出好的方法和建议,我也会给的(如果我还有分给的话,呵呵)
daibo219 2002-01-11
  • 打赏
  • 举报
回复
我在用PAUSE时,发现PAUSE时,DIRECTSHOW就不来读数据,因此,当数据源源不断到达时,会在缓存中累计,当再RUN时,会增加播放的延时。因此,我一般用PAUSE来调节缓存中的数据量。当缓存中数据达不到某一值时,就PUAE几十毫秒,让数据累计,以免出现播放的停顿现象。提供给用户的是STOP,而不提供PAUSE,只作为内部使用。

我没有做多个文件播放。你的意思是连续播放多个文件呢,还是其他什么意思?请能说得清楚一点。大家可以一起考虑。
zlma 2002-01-10
  • 打赏
  • 举报
回复
我觉得数据流实际上应该是实时播放的,就是说你下一次播放的时候,应该中间跳过了一段数据,但是系统会根据你的系统流中的解码时间来判断同步,所以它会停顿一下,我觉得你应该在暂停时不要停止播放,只是不显示图像,这样应该就可以解决问题,或者在暂停后开始播放时将系统的播放时间往前加一个你暂停的时间,应该就可以解决问题。
不过这两种方法我没有具体的做过,你试试看,我们再讨论。
no_limit 2002-01-10
  • 打赏
  • 举报
回复
To :daibo219 兄,
我也正在用DS播放视频流,不过是MPEG4,不知道该怎样控制pause(),找了MSDN,也没发现。还望指点一二,不胜感激。另外,不知兄弟有没有做过多个文件播放?怎样个思路呢?指点一下。
daibo219 2002-01-10
  • 打赏
  • 举报
回复
我得临时解决方法就是用的你的第一种。但这样还是占用资源。你说的第二种我没试过。
等我试过了再告诉结果。谢谢呢!

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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