使用C#播放音乐 使用windows media player

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用C#播放音乐 使用windows media player相关的知识,希望对你有一定的参考价值。

在网上找了一些质料,属性大全,看到播放需要mediaplay.Controls.play();可是要报错,缺少USING指令,打。出不来play,我郁闷,我记得以前弄出来过,就是加using指令,求高手帮帮忙。。。谢谢了

这个windowMeadiaPlayer有几个属性 其中可以获取正在播放的文件总时间,。
如this.windowMeadiaPlayer.currentMedia.durationString是获取正在播放的时间 他是返回string类型的
我把windowsmediaplaer的重要属性卸载这个上面 你自己看看
属性/方法名: 说明:
[基本属性]
URL:String; 指定媒体位置,本机或网络地址
uiMode:String; 播放器界面模式,可为Full, Mini, None, Invisible
playState:integer; 播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪
enableContextMenu:Boolean; 启用/禁用右键菜单
fullScreen:boolean; 是否全屏显示
[controls] wmp.controls //播放器基本控制
controls.play; 播放
controls.pause; 暂停
controls.stop; 停止
controls.currentPosition:double; 当前进度
controls.currentPositionString:string; 当前进度,字符串格式。如“00:23”
controls.fastForward; 快进
controls.fastReverse; 快退
controls.next; 下一曲
controls.previous; 上一曲
[settings] wmp.settings //播放器基本设置
settings.volume:integer; 音量,0-100
settings.autoStart:Boolean; 是否自动播放
settings.mute:Boolean; 是否静音
settings.playCount:integer; 播放次数
[currentMedia] wmp.currentMedia //当前媒体属性
currentMedia.duration:double; 媒体总长度
currentMedia.durationString:string; 媒体总长度,字符串格式。如“03:24”
currentMedia.getItemInfo(const string); 获取当前媒体信息"Title"=媒体标题,"Author"=艺术家,"Copyright"=版权信息,"Description"=媒体内容描述,"Duration"=持续时间(秒),"FileSize"=文件大小,"FileType"=文件类型,"sourceURL"=原始地址
currentMedia.setItemInfo(const string); 通过属性名设置媒体信息
currentMedia.name:string; 同 currentMedia.getItemInfo("Title")
[currentPlaylist] wmp.currentPlaylist //当前播放列表属性
currentPlaylist.count:integer; 当前播放列表所包含媒体数
currentPlaylist.Item[integer]; 获取或设置指定项目媒体信息,其子属性同wmp.currentMedia C# 播放器空件 的常用方法//****************************************************************************//MediaPlay 9 右击工具箱->选择项(I)... -> 显示"选择工具箱项" -> COM组件 -> Windows Media Player wmp.dll 添加axWindowsMediaPlayer1.windowlessVideo = false; //设为false后双击屏幕可以全屏
axWindowsMediaPlayer1.fullScreen = true; //设播放器全屏播放axWindowsMediaPlayer1.URL = @" mms://192.168.0.102/vod/jingwei.wma";axWindowsMediaPlayer1.Ctlcontrols.play(); //播放
axWindowsMediaPlayer1.Ctlcontrols.stop(); //停止
axWindowsMediaPlayer1.Ctlcontrols.pause(); //暂停axWindowsMediaPlayer1.settings.autoStart = true; //自动播放axWindowsMediaPlayer1.settings.mute = false; //静音
axWindowsMediaPlayer1.settings.volume = 100; // 音量 int 0 ~ 100 100 是最大音量axWindowsMediaPlayer1.currentMedia.duration.ToString();//影片长度
axWindowsMediaPlayer1.Ctlcontrols.currentPosition = 30; //当前的播放位置 doubleaxWindowsMediaPlayer1.currentMedia.getItemInfo("Title");//标题
axWindowsMediaPlayer1.currentMedia.getItemInfo("Author");//作者
//*****************************************************************************////*****************************************************************************//MediaPlay 以前版本右击工具箱->选择项(I)... -> 显示"选择工具箱项" -> COM组件 -> 浏览(B)... -> C:WINDOWS\system32\msdxm.ocx -> 打开
Windows Media Player msdxm.dll 添加label4.Text = axMediaPlayer1.Volume.ToString(); //音量
axMediaPlayer1.FileName = @" mms://218.98.101.164/vod/jingwei.wma";//文件路径
axMediaPlayer1.Play(); //开始播放//******************************************************************************//
//****************************************************************************//右击工具箱->选择项(I)... -> 显示"选择工具箱项" -> COM组件 -> RealPlayer G2 Control rmoc3260.dll 添加axRealAudio1.Source = @"F:\mp3\hh.mp3"; //播放路径axRealAudio1.CanPlayPause(); //Bool 型是否能暂停
axRealAudio1.CanPause(); //暂停
axRealAudio1.DoPlayPause(); //正在播放的影片暂停播放axRealAudio1.CanPlay(); //Bool是否能播放
axRealAudio1.DoPlay(); //播放axRealAudio1.CanStop() //播放是否可以停止
axRealAudio1.DoStop(); //播放停止axRealAudio1.SetCenter(true); //按影片原大小播放
axRealAudio1.SetFullScreen();//播放器全屏播放影片int place = axRealAudioP.GetPosition();
axRealAudio1.DoStop();
axRealAudio1.SetCente*(**lse); //拉伸播放 axRealAudio1.SetCenter(true); 按影片原始大小播放
axRealAudio1.DoPlay();
axRealAudio1.SetPosition(place);nResL = axRealAudio1.GetPosition(); //获得当前影片 的播放进度
label1.Text = axRealAudio1.GetTitle(); //获得影片的标题
label2.Text = "当前的带宽: " + axRealAudio1.GetBandwidthCurrent() / 1024 + "KB";//当前影片的当前的带宽
label3.Text = "连接的带宽: " + axRealAudio1.GetConnectionBandwidth() / 1024 + "KB"; //当前的连接的带宽
参考技术A 添加COM组件引用吧...看看下面的C#播放MP3这个教程!http://www.360doc.com/content/10/0918/22/617416_54725761.shtml 参考技术B 记得是要添加一下WMP的组件吧

C# Windows 窗体中的 WMP 在显示 GIF 后停止播放声音

【中文标题】C# Windows 窗体中的 WMP 在显示 GIF 后停止播放声音【英文标题】:WMP in C# Windows Form stops playing sound after displaying GIF 【发布时间】:2017-01-11 07:22:12 【问题描述】:

我正在制作一个 Windows 窗体应用程序,它应该在播放音乐时播放动画 gif。

我使用了 SoundPlayer,一切正常。然后我发现我无法使用 SoundPlayer 播放多个音频文件,这是一个问题(需要背景音乐和效果)。

所以我稍微研究了一下 DirectSound,但每次我执行与 DirectSound 相关的任何操作(设备、缓冲区...)时,我的应用程序都会冻结。

所以现在我正在尝试 WMP,起初我很高兴,但是当我启用 GIF(透明,以防万一)时,音乐在不到一秒的时间内停止,而你可以看到 GIF 停止一个框架左右,就像它正在加载重物。每次同时播放音频和 GIF 时都会发生这种情况,无论其中一个是否提前开始。当我使用 SoundPlayer 时,我可以一次播放 20 个动画 GIF,而不会影响音频。

总结一下:

SoundPlayer = 只有一个音频文件,不可接受

DirectSound = 由于某种原因冻结(也许值得再试一次?不过我想把这个问题的重点放在 WMP 上,反正我丢失了代码)

WMP = 不能很好地配合动画 GIF,这是必需的。

我尝试播放 .wav 和 .mp3 文件,没有区别。 我之前添加了 wmp.dll 引用。

using System;
using System.Windows.Forms;
using System.Media;           

private void button2_Click(object sender, EventArgs e)
            
                var player = new WMPLib.WindowsMediaPlayer();
                player.URL = "song.wav";
                pictureBox1.Visible = true;
            

关于 WMP 有什么我应该知道的吗?你能推荐一些其他的方法吗?当处理达到一定的内存使用率时,音频似乎停止了。它稳定在大约 45 MB,但是一旦我播放音频文件,它就会开始增加,并一直播放到大约 48 MB,然后停止并返回到 45 MB。

感谢您抽出宝贵时间并以任何方式帮助我。

编辑:我使用的是分辨率为 500x500 的 GIF 图片,我使用 SizeMode=StretchImage 使其看起来更小(200x200)。在这种情况下,音乐播放了大约 0.2 秒。我将资源图片的大小调整为 100x100,使用 StretchImage 使其再次显示为 200x200,音乐播放大约 8 秒,如果我一次加载两个 GIF,大约 4 秒。更改 .mp3 比特率使其只有 170KB 根本没有帮助。我的意思是我的谷歌浏览器占用了我 3GB 的内存并且仍然可以正常播放多个视频,而我的表单甚至不占用 50MB 并且很挣扎。当然,必须有一种播放 GIF 和歌曲的方法。是否有某种 MemoryAssignLimit 属性?或者当涉及到更大的资源时,WMP 是否会失败?是不是WinForms设置的限制?

【问题讨论】:

【参考方案1】:

遵循this 解决方案,它就像魅力一样,到处都是 GIF 和 30 首重叠的歌曲,除非我愿意,否则什么都不会停止。太好了。

【讨论】:

以上是关于使用C#播放音乐 使用windows media player的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中使用 Windows Media Player 播放声音

c# 操作文件_小练习(音乐播放器)

求助:关于C#中使用axwindowsmediaplayer 播放wav文件的问题

windows media player有啥用,怎么用?

求助:C#中使用axwindowsmediaplayer 播放wav文件的问题

如何在 C# 中同时播放多个声音?