【012】C#中嵌入音频或视频【转】
首先添加Windows Media Player控件:
在.NET的winform里面,没有托管的音乐播放器,API只能播放WAV格式,对于MP3等形式的音频文件,就要依赖于 MediaPlayer。
使用的方法:
- 在toolbox上点右键,选择“选择项目(Choose Items)”,切到COM页,找到 Windows Media Player, 勾选,确定。
- 在toolbox上,把刚才加入的MediaPlayer控件,拖放到Winform上即可。
---------------------------------------------------------------------------------------------------------
1. AxWindowsMediaPlayer 属性:
- URL:多媒体的地址,直接用string类型赋值即可!
- CtlControls:
- Play():播放
- Pause():暂停
- Stop():停止
属性/方法名: 说明:
[基本属性]
- URL:String; 指定媒体位置,本机或网络地址
- uiMode:String; 播放器界面模式,可为Full, Mini, None, Invisible
- playState:integer; 播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪
- enableContextMenu:Boolean; 启用/禁用右键菜单
- fullScreen:boolean; 是否全屏显示
//播放器基本控制
- Ctlcontrols.play; 播放
- Ctlcontrols.pause; 暂停
- Ctlcontrols.stop; 停止
- Ctlcontrols.currentPosition:double; 当前进度
- Ctlcontrols.currentPositionString:string; 当前进度,字符串格式。如“00:23”
- Ctlcontrols.fastForward; 快进
- Ctlcontrols.fastReverse; 快退
- Ctlcontrols.next; 下一曲
- Ctlcontrols.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
axWindowsMediaPlayer1.currentMedia.sourceURL; //获取正在播放的媒体文件的路径
axWindowsMediaPlayer1.currentMedia.name; //获取正在播放的媒体文件的名称
axWindowsMediaPlayer1.Ctlcontrols.Play 播放
axWindowsMediaPlayer1.Ctlcontrols.Stop 停止
axWindowsMediaPlayer1.Ctlcontrols.Pause 暂停
axWindowsMediaPlayer1.Ctlcontrols.PlayCount 文件播放次数
axWindowsMediaPlayer1.Ctlcontrols.AutoRewind 是否循环播放
axWindowsMediaPlayer1.Ctlcontrols.Balance 声道
axWindowsMediaPlayer1.Ctlcontrols.Volume 音量
axWindowsMediaPlayer1.Ctlcontrols.Mute 静音
axWindowsMediaPlayer1.Ctlcontrols.EnableContextMenu 是否允许在控件上点击鼠标右键时弹出快捷菜单
axWindowsMediaPlayer1.Ctlcontrols.AnimationAtStart 是否在播放前先播放动画
axWindowsMediaPlayer1.Ctlcontrols.ShowControls 是否显示控件工具栏
axWindowsMediaPlayer1.Ctlcontrols.ShowAudioControls 是否显示声音控制按钮
axWindowsMediaPlayer1.Ctlcontrols.ShowDisplay 是否显示数据文件的相关信息
axWindowsMediaPlayer1.Ctlcontrols.ShowGotoBar 是否显示Goto栏
axWindowsMediaPlayer1.Ctlcontrols.ShowPositionControls 是否显示位置调节按钮
axWindowsMediaPlayer1.Ctlcontrols.ShowStatusBar 是否显示状态栏
axWindowsMediaPlayer1.Ctlcontrols.ShowTracker 是否显示进度条
axWindowsMediaPlayer1.Ctlcontrols.FastForward 快进
axWindowsMediaPlayer1.Ctlcontrols.FastReverse 快退
axWindowsMediaPlayer1.Ctlcontrols.Rate 快进/快退速率
axWindowsMediaPlayer1.AllowChangeDisplaySize 是否允许自由设置播放图象大小
axWindowsMediaPlayer1.DisplaySize 设置播放图象大小
- 1-MpDefaultSize 原始大小
- 2-MpHalfSize 原始大小的一半
- 3-MpDoubleSize 原始大小的两倍
- 4-MpFullScreen 全屏
- 5-MpOneSixteenthScreen 屏幕大小的1/16
- 6-MpOneFourthScreen 屏幕大小的1/4
- 7-MpOneHalfScreen 屏幕大小的1/2
axWindowsMediaPlayer1.ClickToPlay 是否允许单击播放窗口启动Media Player
在视频播放之后,可以通过如下方式读取源视频的宽度和高度,然后设置其还原为原始的大小.
private void ResizeOriginal()
{
int intWidth = axWindowsMediaPlayer1.currentMedia.imageSourceWidth;
int intHeight = axWindowsMediaPlayer1.currentMedia.imageSourceHeight;
axWindowsMediaPlayer1.Width = intWidth + 2;
axWindowsMediaPlayer1.Height = intHeight + 2;
}
打开媒体文件并播放:
Dim filePath As String
With Me.OpenFileDialog1
.Title = "打开语音文件"
.CheckPathExists = True
.CheckFileExists = True
.Multiselect = False
.Filter = "mp3文件(*.mp3) |*.mp3 |所有文件(*.*) |*.*"
If .ShowDialog = DialogResult.Cancel Then
Exit Sub
End If
filePath = .FileName
End With
Me.Text = "PC复读机-文件 " & filePath
AxWindowsMediaPlayer1.URL = filePath
Try
Me.AxWindowsMediaPlayer1.Ctlcontrols.play()
Catch ex As Exception
MsgBox("对不起,不能播放此格式语音文件", MsgBoxStyle.OKOnly, "PC复读机")
Exit Sub
End Try
注意:
AxWindowsMediaPlayer1.URL 中URL是表示要播放的文件名,取消了原来的Name属性.
AxWindowsMediaPlayer1.Ctlcontrols.play()播放,同样还有Pause,Stop等其他属性.
AxWindowsMediaPlayer1.settings.balance表示媒体播放的声道设置,0表示均衡,-1和1表示左右声道.
AxWindowsMediaPlayer1.currentMedia.duration 表示要播放的文件的时间长度.可用它获取文件长度.
AxWindowsMediaPlayer1.Ctlcontrols.currentPosition表示正在播放的文件的当前播放位置,可用这个属性来对媒体文件进行前进后退等设置.如
AxWindowsMediaPlayer1.Ctlcontrols.currentPosition+1 表示前进1个时间单位.
AxWindowsMediaPlayer1.settings.rate播放速率,一般乘以16后再显示kbps单位.
注意:在上面程序中,如果在后面加上一个:
msgbox(AxWindowsMediaPlayer1.currentMedia.duration.ToString )
则显示结果很可能为0,因此,这时候很可能获取不到文件的播放时间长度,容易出错。所以在利用的时候可以加一个timer控件:
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
EndPoint = AxWindowsMediaPlayer1.currentMedia.duration
If EndPoint = 0 Then Exit Sub '可能因为媒体文件的打开需要一定时间,这里等待媒体文件的打开
msgbox(AxWindowsMediaPlayer1.currentMedia.duration.ToString )
End Sub
此时msgbox便会显示文件播放长度。
2. Ctlcontrols属性
Ctlcontrols属性是AxWindowsMediaPlayer的一个重要属性, 此控件中有许多常用成员。
(1) 方法play
用于播放多媒体文件,其格式为:
窗体名.控件名.Ctlcontrols.play()
如: AxWindowsMediaPlayer1.Ctlcontrols.play() ‘此处缺省窗体名是Me
(2) 方法pause
用于暂停正在播放的多媒体文件,其格式为:
窗体名.控件名.Ctlcontrols.pause()
如: AxWindowsMediaPlayer1.Ctlcontrols.pause()
(3) 方法stop
用于停止正在播放的多媒体文件,其格式为:
窗体名.控件名.Ctlcontrols.stop()
如: AxWindowsMediaPlayer1.Ctlcontrols.stop()
(4) 方法fastforward
用于将正在播放的多媒体文件快进,其格式为:
窗体名.控件名.Ctlcontrols.fastforward()
如: AxWindowsMediaPlayer1.Ctlcontrols.forward()
(5) 方法fastreverse
窗体名.控件名.Ctlcontrols.fastreverse()
如: AxWindowsMediaPlayer1.Ctlcontrols.fastreverse()
6. 属性CurrentPosition
用于获取多媒体文件当前的播放进度,其值是数值类型,使用格式为:
窗体名.控件名.Ctlcontrols.currentPosition
d1 =AxWindowsMediaPlayer1.Ctlcontrols.currentPosition
其中d1 是一个整型变量。
7. 属性Duration
用于获取当前多媒体文件的播放的总时间,其值为数值类型,其使用格式为:
窗体名.控件名.currentMedia.duration
如:d2 =AxWindowsMediaPlayer1.currentMedia.duration
其中d2是一个整型变量。
来源:http://wenku.baidu.com/view/1b89a61a964bcf84b9d57bc3.html
posted on 2012-02-11 14:11 McDelfino 阅读(1797) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)