急!急!急!怎样用DirectShow显示UDP传输来的视频数据包(200分)

  • 主题发起人 主题发起人 jxhok
  • 开始时间 开始时间
J

jxhok

Unregistered / Unconfirmed
GUEST, unregistred user!
各位:我最近编写了一个视频传输程序,视频数据采集、传输(传输后异地存储成视频文件
没有问题),但想实现在异地视频显示(不通过文件,直接接受视频流)弄不出来,救命啊!
 
看过DirectShow中Async Filter的代码吗?稍微改一改就行.
by the way: 你如果是那个张玉X,我就要大叫fXck you 了.
 
帮忙看看 http://www.delphibbs.com/delphibbs/dispq.asp?LID=884228
 
用Delphi自己的ZLib.pas吧.
 
你说的是视频广播或者是点播吗?
如果是实时的话,确实有点困难
 
不一定实时,有好的建议吗?
 
修改这个即可DXSDK/samples/Multimedia/DirectShow/Filters/Async/Memfile
下面的资料可能对你有用处
先说说memfile例子的整体框架。实际上,directshow已经封装好了几个类,
CasyncReader和CasyncStream是我们最关心的,CasyncReader已经是个source filter了,
而我们只需通过CasyncStream类就可以控制数据了。CasyncStream类很简单,都是一些纯
虚函数。我们是继承它,把它的函数完善就行了
MEMFILE的例子的处理头信息的详细情况。
1。首先,不论是MPEG2还是MPEG1的,他都要读32768字节。这是用来判断数据格式的。
2。其次,如果判断的正确(和你所给的类型一致),对于MPEG1在读32768,然后在读32768,这些数据可以是文件中间的数据。
对于MPEG2格式的,他要读1M多,然后在读几百K的数据。这些数据也可以从文件中间开始。
或是时时的数据流数据也行。也就是说这些数据是和判断无关的。这样大家就应该知道怎
么做了...

3。最后,就是稳定的读数据了。MPEG1的是32768,MPEG2的是1638。只能该成2的N次方。不过要求修改基类。

 
C++的水平只停留在读懂程序,LeeChange先生提示后看过该程序,能理解程序的含义,但在DELPHI
中写出代码还有待时日,谢谢指教,能谈谈DELPHI中如何下手,将不胜感激。另:
LeeChange先生我不是你要FXCK的人。还是另外找人干吧(玩笑)。
再会,问题还想挂几天多跟大家学点东西。
 
http://vcl.vclxx.org/DELPHI/D32FREE/AVICAP.ZIP
 
发错了~~,对不起
 
我想了解
 
[8D]

看看这个:

http://www.banasoft.net/AVPhone.htm
 
jingtao:
视频捕捉DIRECTSHOW例程中用到的FILTER是什么,能详细谈谈视频捕捉需要的东东吗??
 
lljip:没有什么好谈的,要代码就给你一个而已.
 
我正好也有这样的问题:
现在采用的是Asyncreader.Syncread()->Filtergraph.Addfilter()->GraphBuilter.render
不是是否正确。
另,graphbuilder.render()中的ipin如何填写。我试过IBasefilter.enumpins
然后IEnumpins.next,但返回值都不等于S_Ok.
因为刚开始看directshow,大致的体系结构明白了,但实现流程还比较模糊。
 
现在用IFileSourceFilter.load()->IEnumpins.Enumpins->Ipin->IFilterGraph.addfilter
->Igraphbuilder.Render(IPin)
可以播放一个文件。问题是对于流该如何?
请LeeChange和jingtao指点。
 
如果你是做基于摄像头压缩传输的
那么请到这里下载代码
http://go3.163.com/cloudshadow/download.htm
如果用DIRCTEX做基于文件广播的
那么需要看看DIRCTEX SDK下的MEMFILE代码,它告诉你如何播放内存的内容.
不过改为网络传输的时候需要注意以下一些问题:
1:DIRCTEX启动时会造成阻塞,所以在启动DIRCTEX时先停止传输数据,启动完后再继续传输,
否则会造成数据丢失.
2:发送头的时候.必须发两次.就是比如说发64KB,然后再回去读.这个跟播放本地内存有很大
不同.特别要注意.
 
我看过了memfile的代码,不过怎么也找不出stream在CAsyncReade中是如何传递下去的,即
它是怎样被利用的。我单步调试,简直乱极了,还是找不到。jingtao给出一个具体的流程
吧。因为这样摸索除了msdn外,一点头绪都没有,真气人呀。jingtao帮帮忙吧,我想用
delpi做一个播放文件流的例子!!
 

Similar threads

后退
顶部