» Poradna » Zpět na dotaz

RE: Náhrávání zvuku + stopky v C#

Jura  |  21. 4. 2011 21:04:19  |  Odpovědí: 4

Tak jsem si zkusil vložit vlákno co jsme dělali ve škole do mého programu a zkoumat jak se to bude chovat. Bo za zkoušku nic nedám. Snažil jsem se vložit tam takové vlákno, které bude v konzoli vypisovat vlakno1 a vlakno2 a myslel jsem, že to bude vypisovat v konzoli a k tomu ještě nahrávat. Ale opak byl pravdou. Nevíte jak to upravit, aby to vypisovalo a nahrávalo? Nebo je to úplná kravina to co jsem udělal? Díkes


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;
using System.Threading;
using System.Timers;
using System.Diagnostics;



namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public void Start()
{
new Thread(new ThreadStart(ProcessTimer)).Start();
}
private void ProcessTimer()
{
DateTime Now = DateTime.Now;

TimeSpan ts = stopky.Elapsed;
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10);
label4.Text = " " + elapsedTime;
}





//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;
label4.Text = " ";

//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

Stopwatch stopky = new Stopwatch();
private void button1_Click(object sender, EventArgs e) //aktivace nahrávání z mikrofonu
{
Vlakno.Hlavni(); //spuštění vlákna
Thread.Sleep(10); //uspání vlákna


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
{
//TimeSpan ts = stopky.Elapsed;
//string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",ts.Hours, ts.Minutes, ts.Seconds,ts.Milliseconds / 10);
//label4.Text = " " + elapsedTime;

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;

}




//==========================Vlakno===================================

public class Vlakno
{
string jmeno;
int interval;

public Vlakno(string jmeno, int interval)
{
this.jmeno = jmeno;
this.interval = interval;
}

public void Run()
{
while (true)
{
Console.WriteLine("Vlakno {0}", jmeno);
Thread.Sleep(100);
}
}

public static void Hlavni()
{
Vlakno v1 = new Vlakno("v1", 500);
Vlakno v2 = new Vlakno("v2", 1000);

Thread t1 = new Thread(new ThreadStart(v1.Run));
Thread t2 = new Thread(new ThreadStart(v2.Run));
t1.Start();
t2.Start();
t1.Join();
t2.Join();
}
}









}


}

Jméno:
 

E-mail (nepovinné, adresa bude v zabezpečené podobě zobrazena u přezdívky):

:-D :-)) :-) ;-) :-P :-| :-/ :-( 3-[ :-O B-]
 

Pravidla diskuzí v Poradně webu Živě.cz

Zasláním příspěvku do Poradny souhlasíte s těmito pravidly:

  • Podmínky užívání služby informační společnosti
  • Informace o zpracování osobních údajů
  • Příspěvky se musí týkat tématu otázky.
  • Příspěvky nesmí obsahovat vulgární výrazy a slovní útoky na jiné osoby. Příspěvky nesmí poškozovat web Živě.cz ani jeho provozovatele.
  • Je zakázáno vkládat do příspěvků odkazy na stránky nabízející obsah porušující autorská a jiná práva.
  • Příspěvky nelze využívat k propagaci.
  • Příspěvky, které porušují pravidla diskuzí, budou odstraněny. Případně budou upraveny tak, aby neporušovaly pravidla diskuzí. V textu bude následně uvedeno, že příspěvky byly ze strany moderátorů upraveny.
  • Právo moderovat Poradnu mají pouze zástupci vybraní redakcí Živě.cz. Základní kontrola příspěvku probíhá ještě před jeho zveřejněním.
  • Živě.cz je soukromý web a provozovatel má při řešení sporů, které se týkají příspěvků v Poradně, vždy konečné slovo.

Kdy vám můžeme smazat příspěvek?

  • Když budete vulgární.
  • Když budete slovně útočit na ostatní.
  • Když se nebudete držet tématu dotazu.
  • Když budete poradnu zneužívat pro reklamu.
  • Když záměrně zneužijete cizí přezdívku.
  • Když budete porušovat zákony.
  • A když budete na takové příspěvky reagovat, protože se vždy mažou včetně odpovědí ve stromu.