.NET FrameWork 1.1之前版本根本不支持多媒体,.NET FrameWork 2.0也只是对多媒体进行了最简单最有限的支持,如果在我们的.NET程序中需要播放多媒体文件,通常只有通过互操作引入Activex控件来播放音频/视频。在网上找了N久关于C#播放rm视频的文章,终于有了一点结果。为了方便后来者,在这里给出C#中播放rm的简单步骤:
(1)安装了RealOne或RealPlayer ,或者获取了Interop.RealAudioObjects.dll和AxInterop.RealAudioObjects.dll。
(2)在项目的工具箱控件面板中右键菜单=》“添加/移除项”=》COM组件,选中RealPlayer G2 Control并添加
(3)将新添加的RealPlayer G2 Control控件拖到Form中,会在Form的cs文件中增加一个成员变量:
private AxRealAudioObjects.AxRealAudio axRealAudio1;
(4)播放一个rm文件,只需要像下面这样:

(5)若需要更复杂的播放控制,可通过VS的智能感知来查看AxRealAudio的每一个方法/属性的名称、含义。
(6)更详细的AxRealAudio 控件的使用说明参见这里:
http://service.real.com/help/library/guides/production/htmfiles/control.htm
(1)安装了RealOne或RealPlayer ,或者获取了Interop.RealAudioObjects.dll和AxInterop.RealAudioObjects.dll。
(2)在项目的工具箱控件面板中右键菜单=》“添加/移除项”=》COM组件,选中RealPlayer G2 Control并添加
(3)将新添加的RealPlayer G2 Control控件拖到Form中,会在Form的cs文件中增加一个成员变量:
private AxRealAudioObjects.AxRealAudio axRealAudio1; //设置要播放的媒体文件
this.axRealAudio1.Source = "videotest.rm" ;
//显示图像、显示控制面板(快进、停止等)
this.axRealAudio1.SetControls("ImageWindow,controlpanel") ;
//开始播放
this.axRealAudio1.DoPlay() ;
this.axRealAudio1.Source = "videotest.rm" ;
//显示图像、显示控制面板(快进、停止等)
this.axRealAudio1.SetControls("ImageWindow,controlpanel") ;
//开始播放
this.axRealAudio1.DoPlay() ;

(5)若需要更复杂的播放控制,可通过VS的智能感知来查看AxRealAudio的每一个方法/属性的名称、含义。
(6)更详细的AxRealAudio 控件的使用说明参见这里:
http://service.real.com/help/library/guides/production/htmfiles/control.htm
Feedback
windows下面的多媒体是通过directx来进行编程的。从directx9开始,sdk里面的例子就有了c#的版本。
.net不提供多媒体功能,因为没有这个必要。
.net不提供多媒体功能,因为没有这个必要。
这个在我的VS2003中不能通过。。
提示“未处理的“System.NullReferenceException”类型的异常出现在 RealG2Control.exe 中。
其他信息: 未将对象引用设置到对象的实例。
”
提示“未处理的“System.NullReferenceException”类型的异常出现在 RealG2Control.exe 中。
其他信息: 未将对象引用设置到对象的实例。
”
# re: C#播放rm文件 回复
2006-02-15 17:18 by Wu.Country@侠缘呵呵,还不如播放Flash来的简单。。。。其实原理也差不多哦。。
其实我到还真想知道如何用C#来自己处理多媒体,如自己封装类,自己定义文件格式等。。。。而这些真的很难得在.net下实现。
想用几个API都那么麻烦,郁闷死了。。。。。。。。
还好,它对这些COM或者Active的支持都还是很不错的。。。。
其实我到还真想知道如何用C#来自己处理多媒体,如自己封装类,自己定义文件格式等。。。。而这些真的很难得在.net下实现。
想用几个API都那么麻烦,郁闷死了。。。。。。。。
还好,它对这些COM或者Active的支持都还是很不错的。。。。
谁说不可以的...
曾经我天天用.
Microsoft.DirectX.VideoAndAudioPlayback
需要MS DXSDK支持,你都用real了,当然我可以用SDK.发布就是多几个dll罢了
另外 Windows Media SDK也是可以的
Real的也支持,因为都是DirectShow的.测试过.而且尝试过Alpha以及旋转等等..
曾经我天天用.
Microsoft.DirectX.VideoAndAudioPlayback
需要MS DXSDK支持,你都用real了,当然我可以用SDK.发布就是多几个dll罢了
另外 Windows Media SDK也是可以的
Real的也支持,因为都是DirectShow的.测试过.而且尝试过Alpha以及旋转等等..
谁说不可以的...
曾经我天天用.
Microsoft.DirectX.VideoAndAudioPlayback
需要MS DXSDK支持,你都用real了,当然我可以用SDK.发布就是多几个dll罢了
另外 Windows Media SDK也是可以的
Real的也支持,因为都是DirectShow的.测试过.而且尝试过Alpha以及旋转等等..
曾经我天天用.
Microsoft.DirectX.VideoAndAudioPlayback
需要MS DXSDK支持,你都用real了,当然我可以用SDK.发布就是多几个dll罢了
另外 Windows Media SDK也是可以的
Real的也支持,因为都是DirectShow的.测试过.而且尝试过Alpha以及旋转等等..
原来是用COM组件,“.NET FrameWork 1.1之前版本根本不支持多媒体”是什么意思?即使是在Access等VBA环境下也是可以的吧?
要是这么说,没有不是COM的吧.包括DirectX也都是基于COM的.其他的东西,包括Real的实现DirectDraw也是COM.各种视频也基本上都是DirectShow
所以到了DirectX层就算可以了
所以到了DirectX层就算可以了
浙公网安备 33010602011771号