如何全屏幕播放MPEG I视频文件 -- BY CJ(100分)

C

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
Situation:
需要做全屏播放 MPEG I 视频信息(*.mpg or *.mpeg)的程序

Required://本题分数

1、效率要高
2、无版权问题
3、急

Optional://如能实现最好,需要的话,可以加分

1、有源码
 
谢谢LHZ
1.延迟真的没有办法了吗?这是我问这个问题最主要的原因,如果有0.5秒的
延迟 用起来会很不舒服的。

2.我会考虑压缩,但是如何实现呢?这些算法有没有现成的 SOURCE 可用?自
己做会做死的。LHZ应该对压缩有心得吧:)

3.RSVP如何实现?我现在没有路由,但将来可能用到,我本来是直接用SOCKET
现在需要改进吗?

4.群体电话延迟更难过,请再详细说明:如何不听到自己的声音?

5.视频这是将来的事情,而且,一定会有摄影头什么的,他应该会提供一点
压缩什么的功能吧?不然自己写压缩的话,速度可能达不够。

to all and especially to huizhang:哪位大侠如果有音频/视频通讯程序
的SOURCE可以参考(简单点的就可以,复杂了CJ看不懂)可以加分。CJ要把
自己的积分控制在3,000以内
 
??
我好象回答的另一个问题,您怎么把回贴贴到这里了? :) //haha

先说语音的问题:

1.不可能解决.延迟是肯定存在的,只有长短问题.如果网络通信带宽有
保障,系统硬件跟得上,可以将延迟控制在30ms.要再短就非常困难了,
除非用专门硬件并铺设专门网络......
如果不要求复杂的控制,可以在一般的PC机上实现0.2S左右的延时.
如果再缩短延迟,将严重影响回放质量(可能都听不见了).
2.有关于这些标准的源代码,但效率都比较低,只有理论上的意义.要实
用的编码器,还得自己编.不过有一个投机取巧的方法,就是用M$的
ACM(Audio Codec Manager).M$的Netmeeting带有G.723.1等几个
ACM,可以试试.我是没有试过的(如果用M$的ACM编码,就只有M$的
ACM可以解得开了.但有个附加的好处,就是可以将编码几个直接存成
WAV文件,在安装有这个ACM的系统上都可以直接播放).
3.RSVP是资源预约的协议,对当前网络通信的影响不大.如果考虑将来要
使用RSVP,那么现在用UDP通信就可以了.RSVP只对UDP有效.语音/视频
等实时数据也只需要UDP.
4.设有N个终端,一个服务器,对终端i来说,服务器要将N个终端中除i以外
的(N-1)路语音混合,再发送给i.每一路都要这种处理.这样,各个终端
收到的数据中就没有自己的声音了.
5.摄像头肯定不会提供压缩的,它输出的数据是模拟信号.可能有压缩的
是采集卡.但有压缩功能的采集卡都很贵.而且,采集卡提供的压缩算法
基本上没有甚麽用处,因为(1)它压缩的码率一般不能满足要求(2)它
输出的压缩格式只有自己能解开.
6.没有简单的音频/视频通讯程序,这些程序都很复杂,如果是实用的.网上
可以找到各种标准的编解码器,但都是原理性的,效率很差.完整的系统
比较少见.我倒是编过一个屏幕传输的程序(LAN,5-8帧每秒),可以冒充
简单的视频通信,但已经卖给别人了,所以不能给您:(
7.其实延时并不是那么难受.在通信双方只能通过网络交流时,0.5S的延时
不会有太大的感觉.国际长途通常都有超过0.5S的延时,您是否有明显的
感觉?

关于全屏播放MPEG-I,当然是用ActiveMovie了.那是M$自己的东东,OS都
带的,自然没有版权问题,效率还能忍受(感觉比超级解霸好),用ActiveX
控件控制,Delphi下方便又快捷.

BTW:不要去找有source的MPEG-I播放器.MPEG-I的解码是很费计算量的,
不做专门优化的代码效率实在非常低下.而做了专门优化的代码都是
要卖钱的.

CJ是不是两个题都要给我加分呀? :)
 
呵呵
这里只谈第这个问题吧:
RE1:用ACTIVEX总觉得不舒服,而且,我要在一台烂机器上用,程序是用MCI写的,要改很吃力。

RE2:想要,有吗?
RE3:那要看你了:)
 
RE1:MCI也可以控制ActiveMovie播放MPEG.Win95就带ActiveMovie,IE4将其升级
到DirectShow,但都都是兼容的.ActiveX是不舒服,但用起来简单.
RE2:我有一些MPEG的编/解码器,但没有for Win32的 :( 如果要查找这方面的资料,
可以到<a href="http://www.mpeg.org">mpeg.org</a>,我的代码都是从这里
找到的.
 
哦?可是ACTIVEMOVICE的筐好象去不掉
直接用TMEDIAPLAYER可以利用ACTIVEMOVICE?
 
TMediaPlayer是用MCI播放的,好象不能全屏幕.

将ActiveMovie的FullScreenMode设成true,就没有筐了.绝对全屏幕.
 
>TMediaPlayer是用MCI播放的,好象不能全屏幕.
什么意思?是不是如果用MEDIAPLAYER用ACTIVEMOVICE放不能全屏?用XING可以的。
 
不是。TMediaPlayer是用MCI调用ActiveMovie。ActiveMovie的文档
上有关于用MCI控制的说明。我不知道用MCI是否能让ActiveMovie全屏
(也就是说,MCI有FULLSCREEN的选项吗?)。我没有用过MCI。
 
好象没有,不过TMediaplayer有类似的用法:
Mediaplayer1.DispRect := Rect(0,0,640,480);

ACTIVE MOVICE的效果比XING好吗?
 
如果用ActiveMovie播放MPEG,可以看看我刚学DELPHI时写的一个程序,一个多媒体播放器,也是用ActiveMovie播放MPEG,我是用WINAPI函数把窗体的标题档动态隐藏,然后窗体最大化(当然ActiveMovie的可视面积也随之变化),完全可达到满屏。当然,如果用TMediaPlayer来写也应该行得通。
源程序我放在:http://member.zz.ha.cn/grwy/qqxw/myapp/ptmpeg/delphi/source.zip
有些附带文件要安装了运行版的程序才能得到:
http://member.zz.ha.cn/grwy/qqxw/myapp/ptmpeg/delphi/ptmpeg.zip
如果有98年《电脑报配套光盘之PC世界》第三期的话,光盘里就有。
后来我发现如果用mciexecute函数来写多媒体程序的话,会更简单,有兴趣的话可来信讨论。
 
QiangQiang:我看过你的程序,不过,问题是我不想用ACTIVEX,因为我已经用
MEDIAPLAYER搞好了程序,问题只是选个驱动程序而已,现在最后的问题是:
ACTIVEMOVICE是否效率比XING高?

BTW TO 强强:你的主页怎么了?
 
感觉上ACTIVEMOVICE音效比XING好,解码比XING慢一点。XING读烂盘的功夫比ACTIVEMOVICE差一点。纯属个人看法。

BTW TO:我的主页怎么了是何意思?
 
我还是考虑XING,有其它好的驱动程序吗?

你的主页许多连接连不上
 
没有那么麻烦!
直接用TMediaPlayer就可以搞定了,
全屏播放的问题也很容易解决:
1、将Form设置为没有边框,最大化
2、将播放区域指定到Form上,方法:
(1)MediaPlayer1.Display:=Form1;
(2)MediaPlayer1.DisplayRect:=<自己指定>;

注意如果指定的Rect大小与画面大小不一致,会有缩放效果。

你还可以指定到Form上的一个Panel上,搞得象个电视机一样,等等等等其他的花招。
 
TO 李兄:
>没有那么麻烦!
不麻烦。什么问题都解决了(如果连这都解决不了,CJ不写程序,拿DELPHI
回家烧汤喝了)问题只是找个适合的驱动程序而已,仔细看上面的帖子
 
先谢了,有发现麻烦告诉我
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部