服务器 频道

将声音存入sql server数据库并播放

  【IT168 服务器学院】wav格式说明:44字节

  RIFF(4)+大小(4)+WAVE(4)+fmt (4)+ChunkSize(4)+wFormatTag(2)+nChannels(2)+nSamplesPerSec(4)+nAvgBytesPerSec(4)+nBlockAlign(2)

  +wBitesPerSample(2)+data(4)+datasize(4)

  using System.Runtime.InteropServices;
  using System.Data;
  using System.Data.SqlClient;
  using System.Text;
  using System.IO;
  using System;

  class test
  {
   [DllImport("winmm.dll")]
   extern static long sndPlaySound(string filename, long flags);
   public static void myPlaySound(byte[] wave)
   {
    string wavFile = "temp.wav";
    FileStream fs = new FileStream(wavFile,FileMode.Create);
    fs.Write(wave,0,wave.Length);
    fs.Close();
    sndPlaySound(wavFile,0);
   }
   public static void myPlaySound(Stream wavStream)
   {
    string wavFile = "temp.wav";
    byte[] wave = new byte[wavStream.Length];
    wavStream.Read(wave,0,wave.Length);
    FileStream fs = new FileStream(wavFile,FileMode.Create);
    fs.Write(wave,0,wave.Length);
    fs.Close();
    sndPlaySound(wavFile,0);
   }
   
   
   public static void Main(string[] args)
   {

    #region 写入数据库
    //  string srcFile = @"D:projectTTSTTSMKCEVOICEwish.wav";
    //  FileStream fs = new FileStream(srcFile,FileMode.Open,FileAccess.Read);
    //  byte[] byteVoice = new byte[fs.Length];
    //  fs.Read(byteVoice,0,byteVoice.Length);
    //  
    SqlConnection sqlConn = new SqlConnection("Data Source=(local);user=sa;password=***;Initial Catalog=roren");
    SqlDataAdapter sqlDa = new SqlDataAdapter("select * from voice",sqlConn);
    //  SqlCommandBuilder sqlCb =new SqlCommandBuilder(sqlDa);
    DataSet sqlDs = new DataSet();
    sqlDa.Fill(sqlDs);
    //
    //  DataRow dr = sqlDs.Tables[0].NewRow();
    //  dr[0] = "wish";
    //  dr[1] = byteVoice;
    //  sqlDs.Tables[0].Rows.Add(dr);
    //  sqlDa.Update(sqlDs);
    //  fs.Close();
    #endregion
    
    foreach(DataRow dr in sqlDs.Tables[0].Rows)
    {
     Console.WriteLine(dr["word"]);
     myPlaySound((byte[])dr["voice"]);
    }
    
    Console.WriteLine("Game Over!");
    Console.ReadLine();
   }
  }

0
相关文章