http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 5701|回复: 7

[Winform] 利用DirectX写的录音机软件怎么才能再次录音?

[复制链接]
发表于 2013-8-9 10:59:47 | 显示全部楼层 |阅读模式
本人C#新手,前些天在DirectX基础上用C#写了个录音软件,但是不知为什么不能够第二次录音,就是在结束第一次录音后只有关闭后重新调试才能够再次录音,否则会出现异常。怎么样才能够不关闭调试情况下再次录音?using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


using System.Threading;
using System.IO;
using Microsoft.DirectX;
using Microsoft.DirectX.DirectSound;


namespace SoundRecord
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            label2.Text = "录音状态—准备录音";
        }


        private SoundRecord recorder = new SoundRecord();


        int hourStart, minuteStart, secondStart;////用于存储开始时刻的时分秒
        private void btnStart_Click(object sender, EventArgs e)
        {  
            hourStart = DateTime.Now.Hour;      ////获取开始时刻的系统当前时间
            minuteStart = DateTime.Now.Minute;
            secondStart = DateTime.Now.Second;
            string wavfile = "test.wav";   
            recorder.SetFileName(wavfile);
            recorder.RecStart();////录音开始
            timer1.Start();////计时开始


        }


        private void btnStop_Click(object sender, EventArgs e)
        {
            timer1.Stop();////计时结束
            label2.Text = "录音状态—录音结束";
            try
            {
                recorder.RecStop();////录音结束
            }
            catch (Exception ex)
            {
                MessageBox.Show("请不要直接或者连续点击停止按钮!");
                return;
            }
            recorder = null;
        }


        private void timer1_Tick(object sender, EventArgs e)
        {
            int i1, i2, i3;
            i1 = DateTime.Now.Hour - hourStart;
            i2 = DateTime.Now.Minute - minuteStart;
            i3 = DateTime.Now.Second - secondStart;
            if (i3 < 0)
            {
                i3 = i3 + 60;
                i2 = i2 - 1;
            }
            label2.Text = "录音状态—正在录音:" + i1.ToString() + ":" + i2.ToString() + ":" + i3.ToString();                     
        }
    }
}
还有个SoundRecord.cs文件(在网上下载,太长,此处放不下了),其中录音开始和停止都是在这里面的,希望大神能够指点啊!



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-8-9 17:48:09 | 显示全部楼层
把所有的变量和对象都从新生成,一下,就是重新New一下,应该是没有释放的原因。
重新打开其实也就是重新生成了 一次,根据这个想法找找原因
 楼主| 发表于 2013-8-20 17:40:52 | 显示全部楼层
站长苏飞 发表于 2013-8-9 17:48
把所有的变量和对象都从新生成,一下,就是重新New一下,应该是没有释放的原因。
重新打开其实也就是重新 ...

谢啦,这个问题已经解决了,问题在于record类全局new了,应该在开始录音时new才行!
 楼主| 发表于 2013-8-20 17:50:21 | 显示全部楼层
站长苏飞 发表于 2013-8-9 17:48
把所有的变量和对象都从新生成,一下,就是重新New一下,应该是没有释放的原因。
重新打开其实也就是重新 ...

站长您好!谢谢您上次给的思路,对于我的这个录音的软件,怎么才能实时显示录音的wav音频的波形文件呢?
发表于 2013-8-20 17:53:00 | 显示全部楼层
你现在能获取波形文件吗?如果能当获取到了直接更新界面,可以使用线程加委托的方法。
http://www.sufeinet.com/forum.ph ... hlight=%CF%DF%B3%CC
 楼主| 发表于 2013-8-20 18:16:01 | 显示全部楼层
站长苏飞 发表于 2013-8-20 17:53
你现在能获取波形文件吗?如果能当获取到了直接更新界面,可以使用线程加委托的方法。
http://www.sufeine ...

现在俺就是一枚小菜鸟,用已有的wav文件绘制图形也有些困难,站长大哥,用已有的wav文件绘制图形需要用到哪些东西啊?您给指条明路吧!
发表于 2013-8-20 18:28:13 | 显示全部楼层
WaveControlTestApp.zip (21.75 KB, 下载次数: 189)
 楼主| 发表于 2013-8-20 18:32:02 | 显示全部楼层
站长苏飞 发表于 2013-8-20 18:28
给你个不太成熟的例子参数下吧

嘿嘿,调谢谢您了!我研究研究吧!
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-19 09:59

© 2014-2021

快速回复 返回顶部 返回列表