有关VCD播放的问题(100分)

  • 主题发起人 主题发起人 陈礼泉
  • 开始时间 开始时间

陈礼泉

Unregistered / Unconfirmed
GUEST, unregistred user!
VCD文件播放结束,在Form2上显示,完了是一片黑屏(用的是全屏),我想回到form1,请问怎样才知道
Mediaplayer播放结束,并关闭form2?用SendMessage(form2.handle,WM_QUIT,0,0),可结果是
如何知道播放结束,并发生什么事件?期待您的回答!






 
设置MediaPlayer1.Notify := True;
在MediaPlayer1的OnNotify中SendMessage
 
你在播放VCD 前首先应得知有多少文件,因为部分VCD碟片可能会包含几个文件,然后照上面
的仁兄说的做,因为MEDIAPLAYER会在每个文件结束时会触发OnNotify事件。但事实上,我也
曾经这么做过,似乎除了结尾,该事件也有可能会被触发,我后来的方法是这样的。
播放文件时,把timeformat 改为时间的格式,然后用计时器计时。当然你也可以这样:
读出文件长度fsize,那么time=fsize/(75*2352).这是因为vcd的格式是一个VCD头然后是数据。
这些数据的以VCD桢形式存放,VCD桢的速率是每秒75桢,每桢2352个字节(很准的,XING,及
mediaPlaer都是参照这以标准进行的,而解霸不是,所以解霸的时间并不是很准确)。如果要
知道更多VCD的标准或信息,找我,因为我是这方面的专家。我这里有很多多媒体应用软件
都是自己写的,很不错的.
 
谢谢两位的参与,lvxq:你知道的ActiveMovie的流式播放吗?(因为你自称是多媒体的专家)
 
lvxq:还有可以讲讲VCD文件的一些知识吗?谢谢!
 
VCD的格式啊<可以啊, 比如
1.判断一个文件是否是VCD文件,你可以查找VCD头,它的头是00 FF FF FF FF FF FF FF
FF FF FF FF 00 ,对不起,记的不是很清,不过你查一下就知道了.
2.VCD的图象桢起始:00 00 01 b3 ,其后12位是图象宽,再12位是图象高,然后的挑过2位
是图象类型的标志,具体怎么样,我还得看我的笔记本了,现在不知道
3.前面说了,VCD的桢是2352个字节(此桢可不是图象桢,我只是称它为VCD桢),因此,只要
你知道VCD桢的起始码,你就能对VCD进行剪接,记住了,是 00 00 01 BA;
好了,先将这么多吧,不过陈先生啊,你是否该给点分呢?因为还有很多秘籍哦
 
lvxq:如果我自己做解码程序,如何读出它的图象和声音呢?
分数一起给你,我所有的分,决不失言!
 
那我就不参与了,呵呵.....
(自己做解码,视频的程序到处都有,音频的就找不到了)
 
自己做解码就用不着了吧,我上次倒是试了一下,图象有马赛克,
声音也有杂波,因为要牵涉到解码的运动补偿,我的算法有问题。
这也确实是个复杂的问题,就连解霸还有人说是垃圾,何况我们乎?
如果要做一些MPEG-1的编码之类的应用型软件,我倒可以帮帮忙,
解码(LVXQ摇摇头)实在太麻烦了。
 
To lvxq:
我最近看到介绍,说MPEG4压缩是MPEG1的3倍。象BMP一样,MPEG1是不是有非常复杂的数据结构?
因为这方面的介绍太少了,就连中关村海淀图书城,都找不到介绍的书
 
我介绍你一本,好象也是北京出的,虽然比较老,可你知道,
老的书里介绍的东西更详细,更具体,由于书现在不在手头,
下次告诉你。(还可以办邮寄手续,而且最好玩的是他的书还
打折--5折)不过别忘了给分。
 
lvxq:
能不能讲讲怎么把mpeg1格式解压成音频部分和视频部分?
 
lvxq:
等你的消息!
 
对不起,最近忙了一点,而且你们的问题好象也深奥了一点,解码实在是一个相当复杂的
问题,也的确不适合在DELPHI里尝试,大概方法是这样,读出码流,找出每个图桢的起始
位置,在那里,包含了图桢的信息,比如是I桢或是B、P桢,以及图桢的速率,尺寸,以及
解码所需要的缓冲区大小等等。而音频和视频的数据都包含在图桢当中,里面有表征其大
小的特征位,但由于这些数据都不是固定在某一位置,所以都要将每个字节展开成2进制。
其实音频的数据开始都是C打头的,剩下的除特征码,补码外基本上是视频的数据。
可实际上的解码却还远不只这么简单,如果不是I图象,你还必须要进行运动补偿,真的
很复杂。
说了这些,我知道很难懂,其实我想我自己也不是完全明了,尽管已经学了那么久,
不然我做出的东西也不会不那么好用了。至于我上次说到的书,我现在还没拿回来,因为
给别人拿走了,而且他不来上班了,所以比较讨厌,我想有机会我会给你的
 
其实就是播放VCD的话很简单的,根本不需要知道多少关于MPEG的知识的,只需要用DirectShow,几行代码就可以了。
 
TO XWOLF :
哦,怎么呢?继续啊,或者提供个例程什么的,好吗?
给我发信好吗:lvxq@telekbird.com.cn
 
自己写多媒体方面的程序
用DirectShow是最好的
自己做编码解码程序最终只能播放一种文件
用DirectShow可以
It supports a wide variety of formats, including Advanced Streaming Format (ASF), Motion Picture
Experts Group (MPEG), Audio-Video Interleaved (AVI), MPEG Audio
Layer-3 (MP3), and WAV files. It supports capture using Windows Driver
Model (WDM) devices or older Video for Windows devices.
 
另 TO:lvxq
能给个更方便的和你联系的方式吗?!
 
to: lvxq
DirectX SDK中有例子的,不难理解,可以去看看
 
大家好! 我发现在一台没有安装任何播放软件的 WIN98 SE 里就可以播放 *.MPG 文件.

WIN98 SE 自己就带 MPG I 的解码程序. 只要把你的MPG文件转成MPGI 的格式就可以了

avi->Visible=true;
Mci->FileName="d://1.mpg";
Mci->Display=avi;Mci->Open();
Mci->DisplayRect=Rect(0,0,640,480);
Mci->Play();
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
740
import
I
后退
顶部