C#获取音频文件(MP3等)播放时间长度的几种方式
来源:互联网 发布:淘宝上传水印图片尺寸 编辑:程序博客网 时间:2024/04/29 00:01
先介绍3种,分别是API方式,读取文件信息方式,使用DirectX中的AudioVideoPlayback方式。
1.API方式
通过winmm.dll中mciSendString多媒体API函数来获得音频文件信息。
主要代码:
using (OpenFileDialog openFileDialog = new OpenFileDialog()){openFileDialog.Filter = "MP3文件(*.mp3)|*.mp3";if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK){string fileName = openFileDialog.FileName;TemStr = "";MP3Name = "";TemStr = TemStr.PadLeft(127, Convert.ToChar(" "));MP3Name = MP3Name.PadLeft(260, Convert.ToChar(" "));ilong = APIClass.GetShortPathName(fileName, MP3Name, MP3Name.Length);MP3Name = GetCurrPath(MP3Name);MP3Name = "Open \"" + MP3Name + "\" type mpegvideo alias mysong";ilong = APIClass.mciSendString(MP3Name, "", 0, 0);durLength = "";durLength = durLength.PadLeft(128, Convert.ToChar(" "));ilong = APIClass.mciSendString("set mysong time format milliseconds", TemStr, TemStr.Length, 0);ilong = APIClass.mciSendString("status mysong length", durLength, durLength.Length, 0);durLength = durLength.Trim();if (durLength == ""){btn.Content = 0;}else{int s_sum = (int)(Convert.ToInt32(durLength) / 1000);int h = (int)(s_sum / 3600);int m = (int)(s_sum / 60) - h * 60;int s = (int)s_sum % 60;btn.Content = string.Format("{0}:{1:d2}:{2:d2}", h, m, s);}}}
2.读取文件信息方式
需要引用COM组件的Microsoft Shell Controls And Automation
主要代码:
using (OpenFileDialog openFileDialog = new OpenFileDialog()){if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK){string strFileName = openFileDialog.FileName;string dirName = System.IO.Path.GetDirectoryName(strFileName);string SongName = System.IO.Path.GetFileName(strFileName);//获得歌曲名称FileInfo fInfo = new FileInfo(strFileName);ShellClass sh = new ShellClass();Folder dir = sh.NameSpace(dirName);FolderItem item = dir.ParseName(SongName);btn.Content = Regex.Match(dir.GetDetailsOf(item, -1), "\\d:\\d{2}:\\d{2}").Value;//获取歌曲时间}}
3.使用DirectX中的AudioVideoPlayback方式
引用Microsoft.DirectX.AudioVideoPlayback;
注意:64位系统需将项目生成为x86应用程序。
如为.NET4.0平台调试,将app.config修改为:
<?xml version="1.0" encoding="utf-8"?><configuration> <startup> <!--<supportedRuntime version="v2.0.50727"/>--> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup> </startup></configuration>
另外:调试中DirectX报错,如需过滤,将菜单 调试->异常->Managed Debugging Assistants中勾去掉即可。
主要代码:
using (OpenFileDialog openFileDialog = new OpenFileDialog()){if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK){string strFileName = openFileDialog.FileName;Audio ourAudio1 = new Audio(strFileName);int h = (int)(ourAudio1.Duration / 3600);int m = (int)(ourAudio1.Duration / 60) - h * 60;int s = (int)ourAudio1.Duration % 60;btn.Content = string.Format("{0}:{1:d2}:{2:d2}", h, m, s);//ourAudio1.Play();}}
代码
作者:FoolRabbit
出处:http://blog.csdn.net/rabbitsoft_1987
欢迎任何形式的转载,未经作者同意,请保留此段声明!
0 1
- C#获取音频文件(MP3等)播放时间长度的几种方式
- C#中用API实现MP3等音频文件的播放类
- C#中用API实现MP3等音频文件的播放类
- C#中用API实现MP3等音频文件的播放类
- 【C#获取音频文件的播放时间】
- 音频文件播放时间的获取
- (转)C#中用API实现MP3等音频文件的播放类
- C#获取 Flv视频文件播放时间长度等信息
- C# 获取mp3文件的歌曲时间长度
- iPhone中播放指定路径的MP3等音频文件
- C#获取web上传音频文件怎么得到文件时间长度
- 几种获取音视频播放时间长度的方法( shell32, WMP, ffmpeg )
- C#里面用API完成MP3等音频文件地播放类
- iOS音频播放的几种方式,打开后台模式的音乐播放、使用AVAudioPlayer播放音乐、播放指定的音频文件、注册音频文件
- 如何获取mp3文件的播放时间
- 获取MP3文件的播放时间
- 使用C#播放MP3/WAV文件的四种方式
- 使用API函数播放MP3等音频文件的类设计(C#)
- 原始套接字编程:raw socket
- 字符串的分割和字串截取
- KVO的内部实现
- 判断你的C/C++水平文章,如果你都掌握了,你的C/C++就是牛人了
- cocos2d-x游戏开发系列教程-超级玛丽06-CMGameScene
- C#获取音频文件(MP3等)播放时间长度的几种方式
- UML总结
- POI设置Excel中颜色效果展示
- 正则表达式30分钟入门教程
- PHP-FPM日志中出现”好像很忙碌”,您需要增加pm.start_servers,或pm.min/ max_spare_servers
- java系列总结(二)类、对象
- 数据驱动与ReactiveCocoa iOS开发
- bma250驱动
- poi Excel 设置样式