急救~~~~~~~~~~~~~~要分就进~~~~~~~~~会的不难~~~~~~不会就难上天~~~~`

use_id 2001-12-20 02:04:50

给你一个WAV文件,你会怎样判断它播放所需要的总时间?

条件一:最好不要打开这个WAV文件来播放(实现不行打开也算)
条件二:最好考虑速度问题,越快越好
条件三:最好请附code
条件四:提供方法也可(说出用什么方法和技术实现)

这是我今天提交“辞职书”来问的一个要处理的问题。多谢了~~~ ~如不行,走前我就没法解决了。

嗨~~~~~

晚上结贴
...全文
132 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
use_id 2001-12-20
  • 打赏
  • 举报
回复
to: kingfish
我不做语音卡,但要处理一些关于语音的问题

不行,现在有点定不下心来了~~
kingfish 2001-12-20
  • 打赏
  • 举报
回复
你是不是在做语音卡啊,
我用过Dialogic的

我想这样肯定能搞定

数据长度:wav大小 - 44
取出采样频率
通道数
8its/16bits

数据/采样/通道/2 (如果16bits)

具体我没试过,你试试
wav格式可以看看
http://www.csdn.net/expert/Topic/365/365106.shtm
mengxihe 2001-12-20
  • 打赏
  • 举报
回复
DWORD CWaveAudio::GetWaveLength()
{
MCI_STATUS_PARMS StatusParms;
StatusParms.dwItem=MCI_STATUS_LENGTH;
if(mciSendCommand(m_wDeviceID,MCI_STATUS,MCI_WAIT|MCI_STATUS_ITEM,(DWORD)(LPVOID) &StatusParms))
return -1;
else return StatusParms.dwReturn;
}
G_zcm 2001-12-20
  • 打赏
  • 举报
回复
你试试看,我用了没问题的
else if(strExt == ".WAV")
{
HMMIO h;
MMCKINFO mmckinfo;
MMCKINFO mmfmtckinfo;
WAVEFORMAT wformat;
h = mmioOpen(((CString)lpszFileName).GetBuffer(100),NULL,MMIO_READ | MMIO_ALLOCBUF);

mmckinfo.fccType = mmioFOURCC('W','A','V','E');
if (mmioDescend(h,(LPMMCKINFO)&mmckinfo,NULL,MMIO_FINDRIFF))
{

mmioClose(h, 0);
return -1;
}
mmfmtckinfo.ckid = mmioFOURCC('f','m','t',' ');
if (mmioDescend(h,&mmfmtckinfo,&mmckinfo,MMIO_FINDCHUNK))
{
mmioClose(h, 0);
return -1;
}
mmioRead(h,(HPSTR)&wformat,mmfmtckinfo.cksize);

TotalTime = (rStatustemp.m_size)/wformat.nAvgBytesPerSec;

}
use_id 2001-12-20
  • 打赏
  • 举报
回复
to: dragon_xhf(峻峭挺拔'超尘拔世'判天地 )
呵呵~~~~ 用我地盘来了.......你~~~~ 没关系~~~~~理解心情~~
如果你认真看了书该是不难的~~~~~~这里面有人会给你回复的。
use_id 2001-12-20
  • 打赏
  • 举报
回复
to: yntty(硝磷)
多谢
to: kingfish(今飞)
多谢~~
to: xiaoxiaohan(萧晓寒)
你的方法可取~~~ ~~~ 不过速度方面也是一个问题。
to: tigerwood12345(tigerwood12345)
你说的很合味口,其实我本来就是为了判断VOX文件的。
不知道你说的VOX 4k/s 和8k/s是什么样的一种情况?是否说因为单双声道的原因?
tigerwood12345 2001-12-20
  • 打赏
  • 举报
回复
希望我上面说的对你有用。
tigerwood12345 2001-12-20
  • 打赏
  • 举报
回复
用WMDIAPLAYER的属性Duration,可以得到总时间,不过要打开文件。如果不要打开文件,那么你可以自己计算,一般VOX文件可以是4K/S,或8K/S,WAV文件是16K/S,好象是这样的,你再查查相关的书,那就可以根据文件的长度来判断时间了。我做过语音卡的程序,就是这样判断的。
yntty 2001-12-20
  • 打赏
  • 举报
回复
帮你up
xiaoxiaohan 2001-12-20
  • 打赏
  • 举报
回复
下面一段希望对你有用:
如何取得线程运行的时间?
(1) 简单取得线程大概运行时间:
DWORD dwStartTime = 0;
DWORD dwEndTime = 0;
DWORD dwRunTime = 0;
dwStartTime = GetTickCount( );
……
……
……
dwEndTime = GetTickCount( );
dwRunTime = dwEndTime – dwStartTime;
(2) 调用GetThreadTimes的函数:
参数 含义
hThread 线程句柄
lpCreationTime 创建时间:英国格林威治时间
lpExitTime 退出时间:英国格林威治时间,如果线程仍然在运行,退出时间则未定义
lpKernelTime 内核时间:指明线程执行操作系统代码已经经过了多少个100ns的CPU时间
lpUserTime 用户时间:指明线程执行应用程序代码已经经过了多少个100ns的CPU时间
GetProcessTimes是个类似GetThreadTimes的函数,适用于进程中的所有线程(甚至是已经终止运行的线程)。返回的内核时间是所有进程的线程在内核代码中经过的全部时间的总和。GetThreadTimes和GetProcessTimes这两个函数在Windows98中不起作用。在Windows98中,没有一个可靠的机制可供应用程序来确定线程或进程已经使用了多少CPU时间。
xiaoxiaohan 2001-12-20
  • 打赏
  • 举报
回复
如果不想听到声音:
DWORD dwOldVOL = 0;
DWORD dwStartTime = 0;
DWORD dwEndTime = 0;
DWORD dwRunTime = 0;
waveOutGetVolume( 0, &m_dwOldVOL );
waveOutSetVolume( 0, 0 );
dwStartTime = GetTickCount( );
sndPlaySound( szFileName, SND_SYNC ¦ SND_NODEFAULT );
dwEndTime = GetTickCount( );
waveOutSetVolume( 0, m_dwOldVOL );
dwRunTime = dwEndTime – dwStartTime;
kingfish 2001-12-20
  • 打赏
  • 举报
回复
to dragon_xhf(飞飞) :
你不会自己发个贴子问啊?
xiaoxiaohan 2001-12-20
  • 打赏
  • 举报
回复
DWORD dwOldVOL = 0;
DWORD dwStartTime = 0;
DWORD dwEndTime = 0;
DWORD dwRunTime = 0;
waveOutGetVolume( 0, &m_dwOldVOL );
dwStartTime = GetTickCount( );
sndPlaySound( szFileName, SND_SYNC | SND_NODEFAULT );
dwEndTime = GetTickCount( );
waveOutSetVolume( 0, m_dwOldVOL );
dwRunTime = dwEndTime – dwStartTime;
kingfish 2001-12-20
  • 打赏
  • 举报
回复
我用BCB的MediaPlayer做过,可以做到
VC初学,不知道怎么做
dragon_xhf 2001-12-20
  • 打赏
  • 举报
回复
程序中要定义类和对象,并且要使用类和对象!!! 因为程序的目的就是为

了展现面向对象的特点和优点!!!
假定: 对一家公司的员工进行管理:
包括人员名字,出生日期,加入公司的年份,那个部门(用ring0---ring9表

示10个部门) ,工资标准等(多多不限)
要求有对(假如有员工改名, 可以实现改名, 尽管使用中不常见, 但主要

是为了实现面向对象思想)(更改工资标准)(开除员工和增加员工)(通过

工龄即加入公司的时间来对员工进行排序, 同一年的可随便排)(通过部门

的对员工排序, 个部门的集中在一起显示,譬如ring0的排了下了跟着就是全

是ring1部门的。。。)
请兄弟们快点回帖, 把源代码和程序发给我, 搞定后就给200分!!!
这是我期末考试的题目, 兄弟们要快快快!!
我的email : citmit@163.com

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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