8509|15

83

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

eVC 在 WinCE 下播放 MP3,我试了3种方法都不成功 [复制链接]

我尝试了以下方法:

1.

  1. int mciSendString(CString lpstrCommand, CString lpstrRetumString, int uReturnLength, int hwndCallback);



  2. mciSendString("close OpenFile", "", 0, 0);

  3. mciSendString("open "test.mp3" alias OpenFile type MPEGVideo", "", 0, 0);

  4. mciSendString("play OpenFile", "", 0, 0);
复制代码


结果:

[code]

(注:我已经在 Link 选项卡中引用了 E:\WINCE500\PUBLIC\COMMON\SDK\SAMPLES\AUDIO\WAVREC\ 下的WINMM.LIB)
此帖出自WindowsCE论坛

最新回复

学习了,MARK))!  详情 回复 发表于 2010-6-4 17:00
点赞 关注
 

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
2.
http://topic.eeworld.net/u/20070303/23/d887eb00-4bc8-4793-9795-f7f36d4fc9ee.html  5楼

  1. #include "dshow.h"

  2. void TestMP3()

  3. {   

  4. IGraphBuilder   *pGraph;   

  5. /*   指向Filter   Graph的指针   */

  6. IMediaControl   *pMediaControl;

  7. /*   指向MediaControl对象的指针   */

  8. /*   初始化,程序启动时执行一次即可   */

  9. CoInitialize(NULL);

  10. /**************************************************************************/

  11. /*   以下程序每次播放MP3(或其他格式)文件时调用   */     

  12. /*   创建一个Filter   Graph   manager   */   

  13. CoCreateInstance(CLSID_FilterGraph,   NULL,   CLSCTX_INPROC,   IID_IGraphBuilder,   (void   **)&pGraph);

  14. pGraph-> QueryInterface(IID_IMediaControl,   (void   **)&pMediaControl);

  15. /*   连接播放指定文件所需的filter   */

  16. // pGraph-> RenderFile(L"\\SDMMC\\音乐\\左边.mp3 ", NULL);

  17. pGraph-> RenderFile(L"\\test.mp3 ", NULL);

  18. /*   开始播放指定的文件   */

  19. pMediaControl-> Run();   

  20. /*   文件的播放在DirectShow中独立线程中进行,此处等待   */

  21. MessageBox(NULL,   L"点击[OK]结束播放 ", L"lay MP3 ", MB_OK);   

  22. pMediaControl-> Stop();   

  23. /*   停止播放   */   

  24. pMediaControl-> Release();

  25. /*   释放对象   */

  26. pGraph-> Release();   

  27. /**************************************************************************/

  28. /*   程序结束时调用   */   

  29. CoUninitialize();

  30. }
复制代码


在按钮事件中调用 TestMP3。结果成功生成 exe,但按了按钮没有听到任何声音。
(注:我的WinCE平台是定制了 mp3 的解码器的,因为有别人做的程序能在上面播放mp3和wma)
此帖出自WindowsCE论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
3.
http://topic.eeworld.net/u/20070303/23/d887eb00-4bc8-4793-9795-f7f36d4fc9ee.html   7楼

首先,在PC机的[开始]-[运行]里执行以下命令:
regsvr32   c:\windows\system32\wmp.dll   /u
这句的意思就是卸载掉   Windows   Media   Player   9.0   版本的控件的注册。然后,在PC机的[开始]-[运行]里执行以下命令:
regsvr32   c:\windows\system32\msdxm.ocx
这句的意思是注册   Windows   Media   Player   6.4   版本的控件。

  接下来,打开   eMbedded   Visual   C++   4.0,建立一个MFC对话框工程,在向导中把允许   ActiveX   控件打上钩,一路下一步。完成向导后,选择   [Project]   菜单中的   [Add   to   project]   中的   [Components   and   controls],弹出   Componests   and   Controls   Gallery   对话框,打开   Registered   ActiveX   Controls   文件夹,显示出好几项来,最后面一项就是   [Windows   Media   Player],选中后点击[Insert]按钮,弹出Confirm   Classes对话框,点OK按钮确定。这时,在对话框编辑窗口中的工具栏中就应该有   Windows   Media   Player   控件了,应该在最低下那个,好像显示的是个叉。
注意:   当你打开Registered   ActiveX   Controls文件夹后,如果里面没有出现Windows   Media   Player,那么你需要点旁边的   Add   Control   按钮,定位到   c:\windows\system32\msdxm.ocx,完成后就会显示出来。

  现在,从工具栏中拖一个   Windows   Media   Player   控件到对话框中,然后在   ClassWizard   中建立一个指向   Windows   Media   Player   控件的变量.
void CMediaPlayerDlg::OnButton1()

{

m_MP.Open(L"\\test.mp3");

m_MP.Play();

}

3.1 Use MFC in a Static Library
结果编译时就出错了:
[code]
3.2  Use MFC in Shared DLL
结果成功生成exe,但运行程序没任何反应(窗体还没创建就结束进程了,连闪都不闪一下)。
此帖出自WindowsCE论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
4. 自己写 mp3 解码器。

难度太大,至今也才看懂了帧边信息,后面的缩放因子和霍夫曼解码只看懂了一些皮毛中的皮毛中的皮毛中的皮毛中的皮毛中的皮毛中的皮毛中的皮毛中的皮毛中的皮毛中的皮毛中的皮毛中的皮毛中的皮毛中的皮毛而已。。。
此帖出自WindowsCE论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
去看看noRains大侠在eeworld的BOLG,有一个CMedia类。
写的很好,去考虑一下啦!
此帖出自WindowsCE论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

6
 
http://blog.eeworld.net/norains/archive/2007/07/27/1712083.aspx
此帖出自WindowsCE论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

7
 
呵呵!


你用的第三种方法是我写的。


这个是调用 Media Player 控件,然后用控件播放,只要提供文件的路径,就可以播放了。


这个方法最简单了,而且一定能实现;


如果静态链接不行,那你试试动态链接。
此帖出自WindowsCE论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

8
 
哦,刚仔细看了一下。


这个需要你定制的 WinCE 操作系统带有 Windows Media Player 控件这个组件;

怎样确定是否带了这个组件,很简单;

启动你的 WinCE 系统,看看桌面上有没有 Windows Media Player 这个播放器。


最后:

遇到问题不要急,急根本不是解决问题的方法。
此帖出自WindowsCE论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

9
 
谢谢 91program 提供的链接,对我的帮助很大。noRains大侠用的是
,正是我想学的。

To zaodt:呵呵,居然引来了原作者,荣幸啊~ 虽然那种方法没成功,不过我也学到了很多东西。以前从来没关注过怎么在VC里添加AX控件,现在学会了。

我用的平台是别人定制好的GPS导航仪,里面确实没有 Windows Media Player 控件,因为 mp3 的图标是未知文件的图标,双击也不会打开(如果安装了WMP,会关联播放的)。如果是那样,有没有办法使用您的这种控件的方法呢?比如说 Copy 一个 ocx 或 dll 之类的进 WinCE?
此帖出自WindowsCE论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

10
 
这个问题我已经用fmodce这个库解决了(http://www.vbgood.com/viewthread.php?tid=86649&page=1#pid466595),不过它又要占用 WinCE 的额外空间,对做小系统不利。
而且我看见 CE 的 Windows 目录下有一个文件是 GAC_Microsoft.WindowsMobile.DirectX_v2_0_0_0_cneutral_1.dll,所以猜测自带的程序是利用 DirectShow 来播放 MP3 和 wma 的,可是我自己这样写(本帖1楼的第2种方法)居然没有任何反应?肯定还有一些细节没有注意到。。。
看来 eVC 和 VC 还是差很远,在 VC 里随便怎么弄都可以成功,呵呵~

最后顺便贴一个我写的 mp3 解码器的界面(只解到帧边信息,后面的正在研究中。。。)

http://www.vbgood.com/viewthread.php?tid=86189&page=7#pid465897
此帖出自WindowsCE论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

11
 
此帖出自WindowsCE论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

12
 
看来,楼主是 VB 高手,昨天没注意看你的 ID 。


其实,eVC 跟 VC 没啥区别,我看问题出在对 WinCE 系统还不怎么了解。


WinCE 系统本身提供了对音频和视频的丰富支持;

只要学会 COM 调用,就可以轻松播放音视频等;

完全可以绕过具体的技术,如 MP3 解码和 PCM 回放。

=======

如果不会用 COM ,那还可以使用如 Media Player ActiveX 控件;

这个控件使用起来更方便,不需要知道什么 COM 组件;

而且这个控件还提供了各种事件,如:文件播放完毕等。

=======

不过,这个要看具体的要求和人了;

像楼主做事这么认真和专业,显然用 Media Player 控件不合适;

其实我也认为用这个控件不合适;

最好的方法就是像 noRains 一样,直接调用 COM 组件;

这样既灵活、又不需要了解复杂的 MP3 解码知识。

=======

当然,最厉害的还是自己解码播放的人!我认为如果有时间,是应该这样做一下。
此帖出自WindowsCE论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

13
 
哪里哪里,VB、eVC、VC……这些都只不过是工具,真正手伸上去比较高的还是那些数学、OS、软件设计都比较强的人。我现在正在研究怎么使用那个 Media 类。

编译有55个错误,第一个错误是这里:
    IGraphBuilder *m_pGB;
error C2143: syntax error : missing ';' before '*'

我对 COM 不熟,貌似是编译器找不到 IGraphBuilder 这些接口的定义?谁能提示一下怎么做?
我是新建一个基于对话框的 MFC 工程,然后添加了 Media.cpp 和 Media.h, PreCompiled Headers 的设置我也试过了,不行。。。
此帖出自WindowsCE论坛
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

14
 
MP3 可以试试 Libmad解码库+WaveOut API来播放MP3。
此帖出自WindowsCE论坛
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

15
 
引用 13 楼 aaa_tnt 的回复:
MP3 可以试试 Libmad解码库+WaveOut API来播放MP3。



能不能具体讲讲 怎么用
此帖出自WindowsCE论坛
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

16
 
学习了,MARK))!
此帖出自WindowsCE论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表