Vous êtes sur la page 1sur 10

using using using using using using using using using using using

System; System.Collections.Generic; System.ComponentModel; System.Data; System.Drawing; System.Text; System.Windows.Forms; System.Threading; System.Net; System.IO; System.Net.Sockets;

using DirectShowLib.MultimediaStreaming; using DirectShowLib; using DShowNET.Device; using NAudio.Wave; using System.Threading.Tasks; using System.Diagnostics; namespace testshoutcast { public partial class Form1 : Form { public Form1() { InitializeComponent(); LoadPLS(); } protected override void WndProc(ref Message msg) { if (msg.Msg == 0x319) // WM_APPCOMMAND message { // extract cmd from LPARAM (as GET_APPCOMMAND_LPARAM macro does) int cmd = (int)((uint)msg.LParam >> 16 & ~0xf000); switch (cmd) { case 13: // APPCOMMAND_MEDIA_STOP constant ff.waveOut.Stop(); break; case 14: // APPCOMMAND_MEDIA_PLAY_PAUSE ff.waveOut.Play(); break; case 11: // APPCOMMAND_MEDIA_NEXTTRACK MessageBox.Show("Next track"); break; case 12: // APPCOMMAND_MEDIA_PREVIOUSTRACK MessageBox.Show("Previous track"); break; case 9: // APPCOMMAND_VOLUME_DOWN MessageBox.Show("Volume down"); break; case 10: // APPCOMMAND_VOLUME_UP MessageBox.Show("Volume up"); break; default: MessageBox.Show("cmd = " + cmd.ToString()); break; } } base.WndProc(ref msg);

} Class5 ff = new Class5(); Thread thread; Task task; private void button1_Click(object sender, EventArgs e) {

} MemoryStream ms = new MemoryStream(); private delegate void AddListBoxItemDelegate(object item); private void AddListBoxItem(object item) { if (this.listBox1.InvokeRequired) { // This is a worker thread so delegate the task. this.listBox1.Invoke(new AddListBoxItemDelegate(this.AddListBoxI tem), item); } else { // This is the UI thread so perform the task. this.listBox1.Items.Add(item); } } public void getResponse() { AddListBoxItem("heeeloooo"); IPAddress host = IPAddress.Parse("46.28.140.91"); IPEndPoint hostep = new IPEndPoint(host, 8032); Socket sock = new Socket(host.AddressFamily, SocketType.Stream, Prot ocolType.Tcp); sock.Connect(hostep); byte[] ff = new byte[1024]; NetworkStream ns = new NetworkStream(sock); string request = "GET / HTTP/1.1\r\nHost: " + "live.raya.fm" + "\r\n" + "User-Agent: WinampMPEG/5.1" + "\r\n" + "Connection: C lose\r\n\r\n"; Byte[] bytesSent = Encoding.ASCII.GetBytes(request); sock.Send(bytesSent); byte[] bytes = new byte[sock.ReceiveBufferSize]; byte[] bytes2 = new byte[sock.ReceiveBufferSize]; int count = ns.Read(bytes, 0, (int)sock.ReceiveBufferSize); int x = sock.Receive(bytes2, bytes2.Length, 0); string dd = Encoding.ASCII.GetString(bytes); IAsyncResult asyncResult = null; ///// Stream ffw = null; // ffw = new FileStream("mmm.mp3", FileMode.OpenOrCreate, FileAccess .ReadWrite); ffw = File.Create("mmm.mp3"); // MessageBox.Show(ffw.CanRead.ToString() + ffw.CanWrite.ToString()

);

while (true) { // read byteblock int bufLen = ns.Read(bytes, 0, (int)sock.ReceiveBufferSize); if (bufLen < 0) return; // MessageBox.Show("Downloaded Buffer Buffer Position"+ffw.Posit ion.ToString()); // ffw = File.OpenWrite("mmm.mp3"); // ffw = new FileStream("mmm.mp3", FileMode.OpenOrCreate, FileA ccess.ReadWrite); for (int i = 0; i < bufLen; i++) { ms.Write(bytes, i, 1); asyncResult = ffw.BeginWrite(bytes, i, 1, null, null); ffw.EndWrite(asyncResult); } // MessageBox.Show("File Buffer Position" + ffw.Position.ToStri ng()); // IAsyncResult asyncResult = null; // using (var ms = File.OpenRead("x1.mp3")) // var msx = File.OpenWrite("x1.mp3"); // FileStream fileStream = new FileStream( "mmm.mp3", FileMode. OpenOrCreate,FileAccess.ReadWrite); if (ffw.Position < 9000) ffw.Position = 0; else ffw.Position -= 8176; using (var rdr = new Mp3FileReader(ffw)) using (var wavStream = WaveFormatConversionStream.CreatePcmStrea m(rdr)) using (var baStream = new BlockAlignReductionStream(wavStream)) using (var waveOut = new WaveOut(WaveCallbackInfo.FunctionCallba ck())) { waveOut.Init(baStream); waveOut.Play(); try { while (waveOut.PlaybackState == PlaybackState.Playing) { Thread.Sleep(500); } } catch (Exception ex) { } } } }

BufferedWaveProvider bxx = null;

private void button2_Click(object sender, EventArgs e) { bxx = ff.bufferedWaveProvider; // Class4 ff = new Class4(); if (ff.waveOut != null) { Class5._bool_stream_end = false; Class5._bool_player_end = false; Class5._bool_getinformation_end = false; //ff.bufferedWaveProvider = null; ff.waveOut.Stop(); ff.waveOut.Dispose(); //ff.networkStream = null; //ff.sock = null; //thread.Abort(); // ff.waveOut.Dispose(); // ff.waveOut = null; } // ThreadPool.QueueUserWorkItem(new WaitCallback(ff.StreamMP3), ge tAddress(textBox1.Text)); // ThreadStart o = new ThreadStart(delegate() { ff.StreamMP3(getAddr ess(textBox1.Text)); }); string[] fdgg = getAddress(textBox1.Text); if (fdgg[0].IndexOf("/", 8) != -1) { ThreadStart o = new ThreadStart(() => ff.StreamMP3File(fdgg[0])) ; thread = new Thread(o); thread.Name = "Thread_GO_TO_Stream_From_File_MP3"; thread.IsBackground = true; thread.Start(); } else { ThreadStart o = new ThreadStart(() => ff.StreamMP3(fdgg)); thread = new Thread(o); thread.Name = "Thread_GO_TO_Stream_From_URL"; thread.IsBackground = true; thread.Start(); }

// thread.Join(); // dd = new Task(delegate() { ff.StreamMP3(getAddress(textBox1.Text )); }); // dd.Start();

string[] getAddress(string address) { if (address.IndexOf("/",8) != -1) { string[] fdf = { address }; return fdf; } else { int start = address.IndexOf("http://"); int stop = address.IndexOf(":", 6); string _address = address.Substring(start + 7, stop - start - 7) ; IPAddress[] addresslist = Dns.GetHostAddresses(_address); string _port = address.Substring(stop + 1, address.Length - (sto p + 1)); string[] verified_address = { addresslist[0].ToString(), _port } ; return verified_address; } } void playRadio() { IPAddress host = IPAddress.Parse("46.28.140.91"); IPEndPoint hostep = new IPEndPoint(host, 8032); Socket sock = new Socket(host.AddressFamily, SocketType.Stream, Prot ocolType.Tcp); sock.Connect(hostep); byte[] ff = new byte[1024]; NetworkStream ns = new NetworkStream(sock); string request = "GET / HTTP/1.1\r\nHost: " + "live.raya.fm" + "\r\n" + "User-Agent: WinampMPEG/5.1" + "\r\n" + "Connection: C lose\r\n\r\n"; Byte[] bytesSent = Encoding.ASCII.GetBytes(request); sock.Send(bytesSent); byte[] bytes = new byte[sock.ReceiveBufferSize]; byte[] bytes2 = new byte[sock.ReceiveBufferSize]; int count = ns.Read(bytes, 0, (int)sock.ReceiveBufferSize); int x = sock.Receive(bytes2, bytes2.Length, 0); string dd = Encoding.ASCII.GetString(bytes); Stream ms = new MemoryStream(); Stream stream = ns; byte[] buffer = new byte[30]; int read; read = stream.Read(buffer, 0, buffer.Length); ms.Write(buffer, 0, read);

ms.Position = 1; var rdr = new Mp3FileReader(ms); using (var wavStream = WaveFormatConversionStream.CreatePcmStream(rd r)) using (var baStream = new BlockAlignReductionStream(wavStream)) using (var waveOut = new WaveOut(WaveCallbackInfo.FunctionCallback() ))

{ waveOut.Init(baStream); waveOut.Play(); while (waveOut.PlaybackState == PlaybackState.Playing) { Thread.Sleep(100); } } } private void timer1_Tick(object sender, EventArgs e) { if (ff.bufferedWaveProvider != null) { //65536 if (ff.bufferedWaveProvider.BufferedBytes <= ff.bufferedWaveProv ider.WaveFormat.SampleRate) { label7.Text = "buffering: " + (ff.bufferedWaveProvider.Buffe redBytes / ff.bufferedWaveProvider.WaveFormat.SampleRate) * 100; } else { label7.Text = "Connected"; } try { label1.Text = "Buffered " + ff.bufferedWaveProvider.BufferedByte s.ToString(); label2.Text = "BufferLength " + ff.bufferedWaveProvider.BufferLe ngth.ToString(); label3.Text = "BufferedDuration " + ff.bufferedWaveProvider.Buff eredDuration.Duration().ToString(); label4.Text = "AverageBytesPerSecond " + ff.bufferedWaveProvider .WaveFormat.AverageBytesPerSecond.ToString(); label5.Text = "BufferDuration " + ff.bufferedWaveProvider.Buffer Duration.Duration().ToString(); label6.Text = "SampleRate " + ff.bufferedWaveProvider.WaveFormat .SampleRate.ToString(); label10.Text = ff.channelDetails[0]; label11.Text = ff.channelDetails[1]; label12.Text = ff.channelDetails[2]; // label13.Text = ff.CurrentSong; // label13.Text = ; label8.Text = "DesiredLatency " + ff.waveOut.DesiredLatency. ToString(); label9.Text = "NumberOfBuffers " + ff.waveOut.NumberOfBuffer s.ToString(); } catch (Exception ex) { } } } bool not_recording = true; private void button3_Click(object sender, EventArgs e) { if (not_recording) {

ff._bool_record = true; buttonX2.Text = " ..."; not_recording = false; } else { buttonX2.Text = ""; ff._bool_record = false; ff._bool_file_record_created = true; ff.ffw.Close(); not_recording = true; } } private void button4_Click(object sender, EventArgs e) { openFileDialog1.ShowDialog(); // DataTable ff = Class5.ParsePLS(openFileDialog1.FileName); MessageBox.Show(openFileDialog1.FileName); foreach (DataRow dr in ff.Rows) {

listBox1.Items.Add(new Item(dr["ChannelsTitle"].ToString(), dr[" ChannelURL"].ToString())); // DevComponents.DotNetBar.BaseItem ffd = new DevComponents.DotNe tBar.ButtonItem(dr["ChannelURL"].ToString(), dr["ChannelsTitle"].ToString()); // itemPanel1.Items.Add(ffd,0); // Item itm = (Item)listBox1.Items[0]; // MessageBox.Show(itm.Value.ToString()); // listBox1.Items.Add(dr["ChannelURL"]); } // itemPanel1.Refresh(); } private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { ListBox gg = (ListBox)sender; bxx = ff.bufferedWaveProvider; if (ff.waveOut != null) { Class5._bool_stream_end = false; Class5._bool_player_end = false; Class5._bool_getinformation_end = false; ff.waveOut.Stop(); ff.waveOut.Dispose(); } Item itm = (Item)gg.SelectedItem;

string[] fdgg = getAddress(itm.Value); if (fdgg[0].IndexOf("/",8) != -1) { ThreadStart o = new ThreadStart(() => ff.StreamMP3File(fdgg[0])) ; thread = new Thread(o); thread.Name = "Thread_GO_TO_Stream_From_File"; thread.IsBackground = true; thread.Start(); } else { ThreadStart o = new ThreadStart(() => ff.StreamMP3(fdgg)); thread = new Thread(o); thread.Name = "Thread_GO_TO_Stream_From_URL"; thread.IsBackground = true; thread.Start(); } }

void LoadPLS() { DataTable ff = Class5.ParsePLS("palestine.pls"); // MessageBox.Show(openFileDialog1.FileName); foreach (DataRow dr in ff.Rows) { listBox2.Items.Add(new Item(dr["ChannelsTitle"].ToString(), dr[" ChannelURL"].ToString())); } DataTable f2 = Class5.ParsePLS("f.pls"); // MessageBox.Show(openFileDialog1.FileName); foreach (DataRow dr in f2.Rows) { listBox3.Items.Add(new Item(dr["ChannelsTitle"].ToString(), dr[" ChannelURL"].ToString())); } } void HideWin(object sender, EventArgs e) { // this.WindowState = FormWindowState.Minimized; Hide(); } private void notifyIcon1_DoubleClick(object sender, EventArgs e) {

Show(); WindowState = FormWindowState.Normal; } private void buttonX9_Click(object sender, EventArgs e) {

if (ff.waveOut != null) { Class5._bool_stream_end = false; Class5._bool_player_end = false; Class5._bool_getinformation_end = false; ff.waveOut.Stop(); // ff.waveOut = null;

} // } private void buttonX8_Click(object sender, EventArgs e) { if (WindowState == FormWindowState.Normal) { WindowState = FormWindowState.Maximized; } else { WindowState = FormWindowState.Normal; } } private void buttonX7_Click(object sender, EventArgs e) { WindowState = FormWindowState.Minimized; } private void buttonX10_Click(object sender, EventArgs e) { Hide(); } private void button1_Click_1(object sender, EventArgs e) { getxxx(); } public string[] getxxx() { string address = "http://46.43.64.50:8008/AJYAL"; if (address.IndexOf("/", 8) != -1) { int start = address.IndexOf("http://"); int stop = address.IndexOf(":", 6); string _address = address.Substring(start + 7, stop - start - 7) ; IPAddress[] addresslist = Dns.GetHostAddresses(_address); Application.Exit(); Process.GetCurrentProcess().Kill(); // System.Environment.Exit(-1);

int x2 = address.IndexOf("/", stop); string _port = address.Substring(stop + 1, x2 - (stop + 1)); string remain_url = address.Substring(x2 + 1, address.Length - ( x2 + 1)); string[] verified_address = { addresslist[0].ToString(), _port , remain_url}; return verified_address; } else { int start = address.IndexOf("http://"); int stop = address.IndexOf(":", 6); string _address = address.Substring(start + 7, stop - start - 7) ; IPAddress[] addresslist = Dns.GetHostAddresses(_address); string _port = address.Substring(stop + 1, address.Length - (sto p + 1)); string[] verified_address = { addresslist[0].ToString(), _port , ""}; return verified_address; } } } public class Item { public string Name; public string Value; public Item(string name, string value) { Name = name; Value = value; } public override string ToString() { // Generates the text shown in the combo box return Name; } } }

Vous aimerez peut-être aussi