c#录音功能怎么实现
答案:1 悬赏:40
解决时间 2021-03-30 00:23
- 提问者网友:贪了杯
- 2021-03-29 00:32
c#录音功能怎么实现
最佳答案
- 二级知识专家网友:未来江山和你
- 2021-03-29 01:37
class RecordingAudio
{
static int sum = 0;
static Timer timer;
///
/// 获取当前是否是正在录制状态
///
public static bool IsRecordingAudio { get; private set; }
[DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
public static extern int mciSendString(
string lpstrCommand,
string lpstrReturnString,
int uReturnLength,
int hwndCallback
);
///
/// 开始录制
///
public static void Start()
{
mciSendString("set wave bitpersample 16", "", 0, 0);
mciSendString("set wave samplespersec 22050", "", 0, 0);
mciSendString("set wave channels 1", "", 0, 0);
mciSendString("set wave format tag pcm", "", 0, 0);
mciSendString("open new type WAVEAudio alias movie", "", 0, 0);
mciSendString("record movie", "", 0, 0);
timer = new Timer(200);
timer.Elapsed += timer_Tick;
sum = 0;
timer.Enabled = true;
IsRecordingAudio = true;
}
private static void timer_Tick(object sender, ElapsedEventArgs e)
{
sum++;
}
///
/// 停止录制,返回录制时间(进1原则)
///
///
public static int Stop()
{
FileUtils.CheckAndCreateFolder();
mciSendString("stop movie", "", 0, 0);
mciSendString("save movie " + "resource/" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".wav", "", 0, 0);
mciSendString("close movie", "", 0, 0);
IsRecordingAudio = false;
timer.Enabled = false;
timer.Dispose();
int s = sum * 200;
return s % 1000 == 0 ? s / 1000 : s / 1000 + 1;///进1原则
}
}
{
static int sum = 0;
static Timer timer;
///
/// 获取当前是否是正在录制状态
///
public static bool IsRecordingAudio { get; private set; }
[DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
public static extern int mciSendString(
string lpstrCommand,
string lpstrReturnString,
int uReturnLength,
int hwndCallback
);
///
/// 开始录制
///
public static void Start()
{
mciSendString("set wave bitpersample 16", "", 0, 0);
mciSendString("set wave samplespersec 22050", "", 0, 0);
mciSendString("set wave channels 1", "", 0, 0);
mciSendString("set wave format tag pcm", "", 0, 0);
mciSendString("open new type WAVEAudio alias movie", "", 0, 0);
mciSendString("record movie", "", 0, 0);
timer = new Timer(200);
timer.Elapsed += timer_Tick;
sum = 0;
timer.Enabled = true;
IsRecordingAudio = true;
}
private static void timer_Tick(object sender, ElapsedEventArgs e)
{
sum++;
}
///
/// 停止录制,返回录制时间(进1原则)
///
///
public static int Stop()
{
FileUtils.CheckAndCreateFolder();
mciSendString("stop movie", "", 0, 0);
mciSendString("save movie " + "resource/" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".wav", "", 0, 0);
mciSendString("close movie", "", 0, 0);
IsRecordingAudio = false;
timer.Enabled = false;
timer.Dispose();
int s = sum * 200;
return s % 1000 == 0 ? s / 1000 : s / 1000 + 1;///进1原则
}
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯