Zdravím! Mám problém už druhý den bojuju s tím, že se do svého programu snažím dostat stopky nahrávání. Prej nejjednoduší to bude pomocí vlákna, ale tady jsem skončil. Nevíte někdo jak založit to vlákno a dál postupovat? Budu vděčný za jakoukoli radu.
Můj kód:
using System;
using System.IO;
using System.Reflection;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.VisualBasic.Devices;
using Microsoft.VisualBasic;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
//pro nahravani
[DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern int mciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);
//pro prehravac
[DllImport("winmm.dll")]
private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);
public Form1()
{
InitializeComponent();
button4.Enabled = false;
button2.Enabled = false;
button3.Enabled = false;
//kontrola souboru LAME.EXE na C:\
FileInfo soubor = new FileInfo(Path.Combine(Environment.CurrentDirectory, "c:\\lame.exe"));
if (!soubor.Exists) //kdyz soubor lame.exe neexistuje zabraz zpravu
{
MessageBox.Show("Pro správnou funkci programu, prosím nakopírujte soubor \"LAME.EXE\" do kořenového adresáře C:\\ \n\nProgram se nyní ukončí."); //kontrola souboru LAME.EXE na disku C:\
System.Environment.Exit(0); //pokud se soubor LAME.EXE nenajde na disku, program se ukončí "killnutí procesu"
}
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//nahrávání do wav
private void button1_Click(object sender, EventArgs e) //aktivace nahrávání z mikrofonu
{
mciSendString("open new Type waveaudio Alias recsound", "", 0, 0);
mciSendString("record recsound", "", 0, 0);
button2.Enabled = true;
}
private void button2_Click(object sender, EventArgs e) //zastaveni nahravani a ulozeni zalozniho souboru nahravka.wav
{
mciSendString("save recsound c:\\nahravka.wav", "", 0, 0); //ulozeni nahravka.wav
mciSendString("close recsound ", "", 0, 0); //ukonceni souboru nahravka.wav
Computer c = new Computer();
c.Audio.Stop();
button3.Enabled = true;
button4.Enabled = true;
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//dekódování z wav do mp3
private void button3_Click(object sender, EventArgs e)
{
SetOutputFileName(); //načtení složky, kam se ulozi vystupni soubor
}
private void SetOutputFileName()
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
string newFileName = System.IO.Path.GetFileNameWithoutExtension("c:\\nahravka.wav");
textBox1.Text = folderBrowserDialog1.SelectedPath + string.Format(@"\{0}.mp3", newFileName); //za {0} můžu napsat jakýkoli název, který má obsahovat výstupní soubor
}
}
private void button4_Click(object sender, EventArgs e)
{
ConvertWavToMp3(); //aktivace konvertoru
MessageBox.Show("Nahrávka byla vytvořena"); //vyskoceni hlasky "Nahravka byla vytvorena"
System.IO.File.Delete(@"c:\\nahravka.wav"); //Po uložení souboru smažeme soubor "c:\nahravka.wav"
button2.Enabled = false;
button3.Enabled = false;
button4.Enabled = false;
}
private void ConvertWavToMp3()
{
string outfile = "-b 32 --resample 22.05 -m m \"" + "c:\\nahravka.wav" + "\" \"" + textBox1.Text.Replace(".wav", ".mp3") + "\"";
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
psi.FileName = "\"" + "c:\\" + "lame.exe" + "\""; //cesta k lame.exe
psi.Arguments = outfile;
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;
System.Diagnostics.Process p = System.Diagnostics.Process.Start(psi);
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//přehrávač
private void button5_Click(object sender, EventArgs e)
{
mciSendString("open \"" + textBox1.Text + "\" type mpegvideo alias MediaFile", null, 0, IntPtr.Zero);
mciSendString("play MediaFile", null, 0, IntPtr.Zero);
button5.Enabled = false;
button6.Enabled = true;
}
private void button6_Click(object sender, EventArgs e)
{
mciSendString("close MediaFile", null, 0, IntPtr.Zero);
button6.Enabled = false;
button5.Enabled = true;
}
}
}