▲怎样获取一个音频文件的播放时间长度?主要是mp3和midi

xunua 2005-11-18 01:10:49
请问,怎样获取一个音频文件的播放时间长度?主要是mp3和midi
...全文
1006 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xunua 2005-11-19
  • 打赏
  • 举报
回复
vb该怎么做呢?
竹林听雨2005 2005-11-18
  • 打赏
  • 举报
回复
VC++中可以实现,但ASP里不一定能实现这个功能。(我没试过)

---------------------VC++ CODE---------------------

自动循环播放的MP3播放器

【实现内容】自动循环播放的MP3播放器

【应用】自动循环播放的MP3播放器主要用于企业文化的应用。在每天的休息时段,播放器自动循环播放指定的MP3音乐。本自动播放器主要根据本公司的情况编写,包括早上上班,中午吃饭和下午下班三个时间段各播放1小时左右的音乐。播放器启动后,只在托盘中有图标,配置好各个时间段的音乐目录后,不需要人工干预,音乐可以自动启动、循环播放和结束。现已在本公司使用。

【特点】本软件用到许多常用的技巧:

1.目录选择对话框

2.文件选择对话框中的多个文件类型过滤设定

3.应用程序在任务栏上隐藏,而在托盘上显示图标

4.进度条的制作

5.定时器使用

6.带有链接功能的按钮――点击按钮可以打开电子信箱

7.椭圆型的彩色按钮,彩色文本

8.彩色标题条,彩色标题文字。等等

【实现原理】主要使用定时器。程序一旦运行,定时器将每秒响应一次。直到手工退出程序。

【主要控件】

m_MusicList---ComboBox类型音乐文件列表

【主要程序段及说明】

voidCMp3PlayerDlg::OnOpen()//点击打开按钮,选择音乐文件。可以多选

{

m_MusicList.ResetContent();

m_MusicAry.RemoveAll();

m_Music.Close();//m_Music是CCOMMCI对象

Init();

m_Pause.SetWindowText("暂停");

//


CStringfilter="媒体文件(所有类型)|*.cda;*.mid;*.rmi;*.midi;*.asf;*.wm;*.wma;*.asx;*.wax;*.m3u;*.wvx;*.mpeg;*.mpg;*.m1v;*.mp3;*.avi;*.wmv;*.wav;*.snd;*.au;*.aif;*.aifc|";

filter=filter+"CD音乐曲目(*.cda)|*.cda|"+

"MIDI文件(*.mid;*.rmi;*.midi)|*.mid;*.rmi;*.midi|"+

"WindowsMedia文件(*.asf;*.wm;*.wma;*.wa?)|*.asf;*.wm;*.wma;|"+

"媒体播放表(*.asx;*.wax;*.m3u;*.wvx)|*.asx;*.wax;*.m3u;*.wvx|"+

"电影文件(*.mpeg;*.mpg;*.m1v;*.mp3)|*.mpeg;*.mpg;*.m1v;*.mp3|"+

"视频文件(*.avi;*.wmv)|*.avi;*.wmv)|"+

"音频文件(*.wav;*.snd;*.au;*.aif;*.aifc)|*.wav;*.snd;*.au;*.aif;*.aifc|"+

"所有文件(*.*)|*.*|";

CFileDialogmusic(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT,filter);

if(music.DoModal()==IDOK)

{

POSITIONpos=music.GetStartPosition();

while(pos!=NULL)

{

CStringstr=music.GetNextPathName(pos);

m_MusicAry.Add(str);

intindex=str.ReverseFind('\\');

if(index==-1)

m_MusicList.AddString(str);

else

{

CStringname=str.Mid(index+1);

m_MusicList.AddString(name);

}

}

}

}

============================

voidCMp3PlayerDlg::Play(intindex)//播放函数,index为曲目的序号

{

m_Music.Close();

m_MusicList.SetCurSel(index);

CStringsPath=m_MusicAry.GetAt(index);

m_Music.Open(sPath);

m_Status.SetWindowText(sPath+_T("正在播放..."));//在状态条中显示提示信息

m_nLength=m_Music.GetLength();//获取音乐长度

m_nPos=0;

m_nTime=m_nLength/1000;//除以1000即为播放时间

//

m_sMusicLen.Format("%d分%d秒",m_nTime/60,m_nTime%60);//显示播放时间

m_sMusicPos.Format("%d分%d秒",m_nPos/60,m_nPos%60);//显示当前播放位置

//

UpdateData(false);

m_MPBar.SetScrollRange(0,m_nTime);//设置音乐播放的进度条范围

//

m_Volume.SetRange(0,1000);//设置音量调节范围

m_Volume.SetPos(m_nVolume);

//

m_Music.Play(this->m_hWnd);//开始播放

SetTimer(2,1000,NULL);//启动2号定时器

}

============================
czcb 2005-11-18
  • 打赏
  • 举报
回复
既然你说VB能够实现

那就用VB做个组件不就好了吗
andraw2002 2005-11-18
  • 打赏
  • 举报
回复
这问题有意思,关注中……
xunua 2005-11-18
  • 打赏
  • 举报
回复
有知道的兄弟吗?
我在网上搜索了好久,也没找到相关的组件
vb好像能解决,我看了一下,没看动,呵呵

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧