奇怪的问题,MCI播放不了mpg文件。

现在还是人类 2008-05-22 06:30:47
我碰到了一个奇怪的问题,我使用MIC播放媒体文件的时候像被卡死一样。
我采用以下代码可以播放很多种类型的文件(安装过解码器的情况下)
包括rm、rmvb、wmv等等,但是最奇怪的就是放不了mpg文件,这个mpg文件
是我从vcd的歌碟中拷贝的,原来是dat文件,后来因为我用MCI播放后,只要
一打开文件程序就像卡死了一样不动(包括vb本身),所以我就用WinAVI将这
个文件转换成了mpg格式的来看看,结果也是一样。但这个文件我用Media Player
和 暴风影音 还有 KMPlayer 来播放都没问题。后来我就想是不是解码器问题。
因为安装 暴风影音 的时候暴风影音会重新注册解码器,所以我下载了最新的3.6版
重新安装,结果用MCI播放还是不行。但那些播放器都没问题,dat和mpg都能播放。
其实我以前也搞过MCI播放mpg和dat文件,没什么问题,但这次放不了估计问题出在
系统,但为什么那些软件又可以播放呢?都不知道是为什么。
还有:
"MPEGVideo"、"AVIVideo"、"CDAudio"、"Sequencer"、"WaveAudio"
我试过"MPEGVideo"和"AVIVideo",效果一样,像死机一样,只能强制关闭程序。

代码如下:

Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
Private Declare Function mciSendString Lib "winmm.dll" Alias _
"mciSendStringA" (ByVal lpstrCommand As String, _
ByVal lpstrReturnString As String, ByVal uReturnLength As Long, _
ByVal hwndCallback As Long) As Long

Private Sub Command1_Click()
'加载一个影片或MP3文件
mciExecute "open D:\AVSEQ05.mpg TYPE MPEGVideo ALIAS DemoPlayer STYLE child PARENT " & Me.hWnd
'设置调整条的当前度量为当前控件的音量 最大是100,最小是0
Dim 返回字符 As String * 128
mciSendString "status DemoPlayer volume", 返回字符, 128, 0
Slider1.Value = Int(Left(返回字符, 8))
End Sub
Private Sub Command2_Click()
'播放
mciExecute "play DemoPlayer notify"
End Sub
Private Sub Command3_Click()
'暂停
mciExecute "Pause DemoPlayer"
End Sub
Private Sub Slider1_Scroll()
'设置音量大小
mciExecute "setaudio DemoPlayer volume to " & Slider1.Value
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
'停止播放
mciExecute "Stop DemoPlayer"
'关闭打开的MDI设备
mciExecute "close DemoPlayer"
End Sub
...全文
515 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
IamDeane 2008-05-27
  • 打赏
  • 举报
回复
生成EXE后再看看,原来有看过这个问题,后来最终结果是驱动问题,这个问题很普遍,很多播放器其实都有这个问题,我自己就遇到过很多次,豪杰,暴风,KMPLAY等等,他们也没有很好的解决,或者说目前无法解吧,建议使用MediaPlay或者DX,这样的问题较少,并且你使用早期版本的DX或者MediaPlay,兼容性也是很强的
现在还是人类 2008-05-27
  • 打赏
  • 举报
回复
来个人答两句吧
现在还是人类 2008-05-27
  • 打赏
  • 举报
回复
为表感谢加分感谢两位
现在还是人类 2008-05-27
  • 打赏
  • 举报
回复
试试换个winmm.dll,呵呵,还真是没有这样考虑过,长见识了,谢谢。

to chenjl1031
========================
谢谢你的帮助,你的建议我会好好研究一下,然后会认真考虑的。虽然有点不熟不想用的想法。
但是对于MCI的部分缺点而言可能我会选择考虑DX8.1,因为DX9 SDK .Net的范例多,VB的就
没见过,也可能是我不注意的缘故。所以在想从新了解一下DX 的DirectShow。以前只是看了
一下范例,感觉代码太多,没仔细研究,所以不是很了解。现在听你这么一说我又想再了解看看
啦,谢谢指教。
IamDeane 2008-05-27
  • 打赏
  • 举报
回复
那你是啥个系统?
“其他播放器却可以”因为现在大部分的播放器基本都是DXSHOW实现的,可能和MCI的调用过程不一样吧。
一般的解码器信息位置都应该在注册表里,在DX的SDK里面有这样的例子可以把所有的解码器显示出来。
PS
如果你像我一样疯狂的话可以试试换个winmm.dll试试:)
东方之珠 2008-05-27
  • 打赏
  • 举报
回复
我建议你使用Windows操作系统自带的运动图像播放类型库:quartz.dll(在c:\windows\system32下面),是当今DirectShow的前身,里面有很多DirectShow命令,就是我5楼的说的那种方法。只要装了解码器,常见的都能播放:
包括:1、常见的Windows音、视频文件;
2、Real媒体文件(rm,rmvb,ram等);
3、QuickTime文件(mov,qt等);
4、Flash媒体文件(Flv),swf文件需要Flash.ocx控
件才能播放。
5、DVD小文件(几百兆的VOB文件,能够正确识别媒体时间;1G的VOB能播放,但不能读出准确时间)。要准确播放DVD光盘及DVD文件,建议使用Windows操作系统自带的MsWebDVD.dll类型库(在c:\windows\system32下面),使用这个类型库能够控制DVD字幕菜单、标题菜单、音频菜单、角度菜单等。

解码器下载:
MyMPC 音视频解码器包(修订)http://www.mympc.org/down/1/2005-7-13_17220295508.html
或者使用:暴风影音 2007全功能完美版(网上有,自己找一个下载),几乎大多数都可以播放
现在还是人类 2008-05-27
  • 打赏
  • 举报
回复
终于有个预见过这问题的人了,呵呵,都不知道开心对不对。
但就像我说的,MCI不能放MPEG,但其他不放器却可以,这可能
和你说的有点不同。我郁闷的是这个。如果我放不出那些播放器
也放不了,我无所谓,但是情况不是这样,我用MCI放不了,其
他的播放器正常,这个还真说不出个理由。因为MCI在正常的情
况下应该可以放的,放不了肯定是根本的地方处理问题。解码器
应该还在,可能是哪的信息被改动了MCI就找不到解码器了。
这些信息一般就应该在系统中INI、INF、SYS或注册表里,是哪
里呢?郁闷呀
东方之珠 2008-05-23
  • 打赏
  • 举报
回复
用我写的这个代码放一下你的mpg:
http://blog.csdn.net/chenjl1031/archive/2007/12/24/1964909.aspx
东方之珠 2008-05-23
  • 打赏
  • 举报
回复
你用WinAVI转换的可能是mpeg4,需要解码器。
东方之珠 2008-05-23
  • 打赏
  • 举报
回复
不用转换,直接将扩展名dat改成mpg,dat是人为改的,本来就是mpg格式
现在还是人类 2008-05-23
  • 打赏
  • 举报
回复
还有,因为我的系统安装了解码器,所以即使播放 MP4 和 3gp 甚至连 FLV 都能播放,
没问题。就是这个 mpeg 一放就卡死程序。
现在还是人类 2008-05-23
  • 打赏
  • 举报
回复
谢谢楼上的兄弟,我试过了,你的代码 wmv rm 都可以,就是没有图像,但放 mpg 也会卡死。
还有,我用WinAVI转换的不是mpeg4,而是mpeg1,这个我可以很确定。所以我才奇怪,这是
什么问题?最主要的是我系统中的所有媒体播放软件都能放,这个就是我最奇怪的。KMPlayer
是自己解码的,可以例外,但是Media Player 和 暴风影音 也能放,这就是我最不可理解的
地方,难道他们不用MCI?或者是他们用MCI的方法和我有什么特别不同的地方?
我也尝试过用mciSendCommand 来播放,但是效果和 mciSendString 的一样,其他文件没问
题,就是放mpeg文件的时候有问题。而且我测试的不只一个文件,出现的问题一样。
现在还是人类 2008-05-23
  • 打赏
  • 举报
回复
我测试过,同样的MCI程序和mpeg文件,我在另外的电脑运行没有问题
但在我这台电脑就是放不了。可能我装的东西太多太乱了,都不知道是
什么东西影响了他?在哪影响了他?但这种情况应该是很少出现的,我
也就这次才碰到。而且就我这台电脑来说,有很多解码器,能支持播放
的格式也很多,基本上常用的的格式都能用,所以用MCI作播放器我认
为也没什么不可以的,因为我这里的问题不是播放的媒体格式不够,而
是有个别 MCI 应该可以播放的格式播放不了,所以我就感觉 MCI 的
播放格式稳定性不强。或者说我用 MCI 的时候少了很么步骤或方法才
会导致这样。其实流媒体播放除了 DX 技术也可以看看 Media Player SDK
来用的,这两种技术我以前也看过他们的 SDK,但是我想,MCI 是基
本的 API 函数,代码适应性很强,而且在有解码器的情况下,支持的
格式也并不比 DX 的少,所以说放弃 MCI 的想法我还是不想去考虑,
现在我就像搞清楚为什么会这样?应该能播放的格式为什么却播放不了?

我的系统安装了很多与媒体播放或处理有关的软件。应该就是这些东西
搞的鬼,但是他们搞那里会影响到 MCI 不能正常呢?当然要找出问题的
方法也有,就是重新装系统,然后对系统进行全面的快照,然后安装这
些乱七八糟的软件,然后再作快照对比。当发现哪个装完后用不了 MCI
播放 mpeg,那就把这个软件的快照作对比,答案也应该出来了。但是这
样太耗费时间和精力了。应该是个很麻烦的工程。所以想问一下最这方
面比较有经验的高手问题出在哪?
东方之珠 2008-05-23
  • 打赏
  • 举报
回复
MCI放不了几种,做播放器千万不能用MCI.而要用其他的!
推荐:
基于VB的流媒体解码与播放技术 http://tech.ddvip.com/2006-07/11541048486133.html

这里面使用的就是我9楼的技术,有一个完整播放器源代码,你可以修改完善!
现在还是人类 2008-05-23
  • 打赏
  • 举报
回复
谢谢楼上的兄弟,用你上面的代码可以播放,mpeg也没问题。
但是为什么MCI就不可以呢?
东方之珠 2008-05-23
  • 打赏
  • 举报
回复
我5楼那个播放WMV有图像,自己会弹出来一个播放窗口,我没装任何解码器!
东方之珠 2008-05-23
  • 打赏
  • 举报
回复
再用我写的这个代码试一试:
http://blog.csdn.net/chenjl1031/archive/2008/05/04/2383674.aspx
东方之珠 2008-05-23
  • 打赏
  • 举报
回复
我5楼那个代码播放Mpeg都没问题,mpeg1就更不应该有问题了.
估计是解码器的问题.你是不是装了很多解码器?

舉杯邀明月 2008-05-22
  • 打赏
  • 举报
回复
我来坐BD! ^_^
现在还是人类 2008-05-22
  • 打赏
  • 举报
回复
没人来,自己坐沙发。
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 Altium Designer 18是一款功能丰富的电子设计自动化工具,其集成了电路原理图绘制、PCB布局规划、三维视图展示、电路仿真分析以及生产文件生成等多项核心功能,为电子工程师们提供了一个全面的硬件设计解决方案。该软件的官方中文指导材料系统地阐述了从项目初始阶段到最终完成的全过程操作方法。 在“AD18 官方中文指导材料”中,使用者可以掌握以下核心内容要点: 1. **系统配置与界面认知**:熟悉Altium Designer 18的工作平台,涵盖菜单选项、工具栏配置、工作区域安排,以及个性化工作界面的设定方法。 2. **项目创建流程**:掌握如何建立新的项目工程,包括工程参数配置、项目模板选取,以及项目文件的添加操作。 3. **电路图绘制技术**:学习电路原理图的绘制流程,包括元件库的维护管理、元件放置技巧、连接线路绘制、属性编辑操作,以及网络表的自动生成方法。 4. **元件库构建与管理**:了解如何建立自定义元件库,执行元件的导入与导出任务,以及利用Altium Designer自带的元件资源库。 5. **PCB布局设计方法**:掌握PCB设计的基本准则,如元件布局策略、布线技巧、层叠结构调整、布线规则优化,以及冲突检测与短路处理技术。 6. **设计规范与约束条件**:理解设定设计规范和电气约束条件的关键性,包括间距参数设定、焊盘尺寸规格、过孔尺寸要求等,以及运用规则检查进行设计验证的流程。 7. **三维模型整合应用**:学习如何将三维模型与PCB设计内容相结合,以实现更为直观的机械配合验证。 8. **电路性能仿真技术**:掌握使用Altium Des...
源码链接: https://pan.quark.cn/s/a4b39357ea24 ### 接口测试知识要点说明 #### 一、接口测试的定义及分类 1. **概念阐释**: - 接口测试作为软件测试的关键环节,主要对系统之间的交互点进行验证。 - 它旨在核实接口的正确性、稳定性和功能性,保障各个系统组件能够依照预期执行交互操作。 2. **实施情境**: - 适用于多系统联合开发的环境。 - 适用于包含多个子系统的复杂应用系统开发过程。 3. **适用范围**: - 为其他系统提供支持的底层基础架构系统。 - 负责协调中心服务的系统架构。 4. **分类标准**: - **模块接口测试**:通常作为单元测试的一部分,适用于独立构建的功能模块。 - **Web接口测试**: - **服务端接口测试**:针对客户端与服务器端之间的接口进行验证。 - **外部接口测试**:对第三方提供的接口进行测试,例如支付平台提供的授权登录接口。 5. **测试角度**: - **接口功能验证**:核实接口功能是否满足预期要求。 - **接口性能评估**:衡量接口的处理能力及响应时间。 - **接口稳定性考察**:检测接口在长时间运行中的表现情况。 - **接口安全检测**:确保接口能够抵御非法访问或数据篡改。 6. **测试手法**: - **参数细致测试**:深入测试接口的输入参数和输出结果。 - **场景模拟测试**:依据实际业务场景进行测试验证。 #### 二、接口测试的详细流程 1. **测试规划**: - 明确测试范围、目标及所需资源。 - 规划测试策略,选择适宜的工具和技术手段。 2. **测试用例设计**: - 依据需求文档和接口规格文档设计测试用例。 - 覆...
内容概要:本文研究基于遗传算法(GA)与粒子群算法(PSO)相结合的无人机三维路径规划方法,旨在解决无人机在复杂三维环境中避障与路径优化的关键问题。通过构建包含障碍物、威胁区域等约束的三维仿真环境,系统实现了GA与PSO两种智能优化算法的Matlab代码,并对其在路径规划中的性能进行全面对比分析,重点关注路径长度、飞行安全性、算法收敛速度等核心指标。研究充分利用GA的全局搜索能力与PSO的快速局部收敛特性,提出一种混合优化策略,有效克服单一算法易陷入局部最优或收敛缓慢的缺陷。文中不仅详细阐述了算法的设计流程、数学模型与实现细节,还提供了完整的仿真结果,验证了所提混合方法在复杂动态场景下的优越性、有效性和鲁棒性,为无人机自主导航提供了可靠的理论依据和技术方案。; 适合人群:具备一定Matlab编程基础和优化算法理论知识,从事无人机系统设计、智能控制、路径规划、人工智能应用等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于城市峡谷、山区、灾害救援等复杂三维环境中的无人机自主避障与最优任务路径规划;②为智能优化算法(GA、PSO及其混合策略)的学习、性能对比与工程化应用提供详实的实践案例和代码参考;③服务于高校科研教学、算法原型快速复现、以及在此基础上的进一步改进与创新研究。; 阅读建议:建议读者结合所提供的Matlab代码进行仿真运行与调试,深入理解两种算法的参数设置、适应度函数设计及路径生成机制,可通过修改环境地图、增加动态障碍物或调整优化目标函数等方式进行扩展性研究,以深化对算法本质和应用场景的理解。

807

社区成员

发帖
与我相关
我的任务
社区描述
VB 多媒体
社区管理员
  • 多媒体
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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