如何判断DirectShow解码器停止工作或如何判断一个数据包是否为"mpeg1"格式?(300分)

  • 主题发起人 主题发起人 watter
  • 开始时间 开始时间
W

watter

Unregistered / Unconfirmed
GUEST, unregistred user!
编写网络视频传输系统中碰到的问题:发送端采用德加拉公司的AVE2KXD视频压缩压缩卡
采集视频信息,得到MPEG1数据流,包的大小为2324,用UDP对网络广播,接收端用DirectShow
对接收的数据包进行解码回放。在进行长时间运行测试时,发现运行5个小时解码器停止工作
,与厂商联系,得知为了板卡工作的稳定性,厂商在驱动中设置了工作5个小时对压缩卡关闭
再重新启动的机制,与解码器停止工作的时间吻合,用压缩卡自带的SDK做本地保存测试,播
放生成的MPEG1文件,发现在5个小时的位置,有异常现象。
本人对以上现象初步理解:由于压缩卡在关闭重新启动的瞬间发出了不符合MPEG1格式的
数据包,或是重新启动后发出的第一个数据包不符合MPEG1格式,使得DirectShow不能识别该
数据包,导致解码停止;
问题的解决办法有两个,
1、对每一个数据包进行识别,将不符合MPEG1格式的数据包丢弃;
2、截获DirectShow发出的异常消息,做相应处理;
以上两种办法具体如何实现,请帮忙,谢!
 
到下面的网站下载一套控件,里面有两个控件可以播放 MPEG1 ,并可以截获DirectShow发出
的异常消息...
自己下载下来看看吧。
http://www.progdigy.com
 
DirectShow?
why not use mci?
it can too.
 
AVE2KXD视频压缩卡 的开发SDK FOR DELPHI 有吗?怎样得到它?
 
to 徐军:
http://www.thakral-it.com/sdk/2000x.htm
 
watter:用DirectShow对接收的数据包进行解码回放的代码可以给我看看吗?
 
每遇到一个'00 00 01 ba'为一个包的开始。
刚打开采集线程时记下头两个包,每次中断再开时先送这两个包,在送采集到的实时数据。
 
1。你可以到 www.progdigy.com 下载一个Delphi DirectX8原码和控件的最新版
2。你可以在快到5小时时,开始记录UDP数据报,观察是否与其他包标记不同
3。你可以将此记时点的UDP包过滤,不采样
 
To LeeChange:
请问你有Mpeg文件的编码规范吗?我在网上找了,只有E文的,看着太累了,如果你有中文的
请给我发一个好吗?先谢过了。watter@sina.com
 
progdigy上面的不能播放流
 
watter:用DirectShow对接收的数据包进行解码回放的代码可以给我看看吗?
wshang@ocdtt.com
 
to screen:
sorry, 如果那样,老板会把我杀了
 
to watter
呵呵,那我只有自己看看了,我想应该能搞定吧。
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=886191
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1181350
 
除了每一个包的开始是'00 00 01 ba',请注意第14、15字节,在MPEG1的编码规范里讲的很清楚。
 
to chinawaterman:
谢谢,问题已经解决。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部