日期:2014-05-18  浏览次数:21542 次

C#中如果播放 音频流数据(byte[])
音频流数据来的byte[],如何播放(没压缩也没干什么的,原始格式)
必须用WIN,API吗!如果是,用哪个API?

------解决方案--------------------
system.media
可以用mediaplayer控件,
不一定要api吧,
还要看是什么格式的音频流。
------解决方案--------------------
Interop.MediaPlayer.dll
你要是C#.net来写的话,是不需要通过API调用,只需要应用一写这个Dll就可以了.
我写的一个Demo 部分源码
private void button1_Click(object sender, System.EventArgs e)
{//浏览MP3文件
if(this.openFileDialog1.ShowDialog()==DialogResult.OK)
{
this.listView1.Items.Clear();
string []FileNames=this.openFileDialog1.FileNames;
foreach(string FileName in FileNames)
{
//取得文件大小
FileInfo MyFileInfo=new FileInfo(FileName);
float MyFileSize=(float)MyFileInfo.Length/(1024*1024);
this.axMediaPlayer1.FileName=FileName;
//取得作者信息
string MyAuthor=this.axMediaPlayer1.GetMediaInfoString(MediaPlayer.MPMediaInfoType.mpClipAuthor);
//取得不含路径的文件名
string MyShortFileName=FileName.Substring(FileName.LastIndexOf("\\")+1);
MyShortFileName=MyShortFileName.Substring(0,MyShortFileName.Length-4);
//填充歌曲列表
string[] SubItem={MyShortFileName,MyAuthor,MyFileSize.ToString().Substring(0,4)+"M",FileName};
ListViewItem Item=new ListViewItem(SubItem);
this.listView1.Items.Add(Item);
this.listView1.Items[0].Selected=true;
}

}
}

private void button2_Click(object sender, System.EventArgs e)
{//播放MP3文件
if(this.listView1.Items.Count>0)
{
if(this.listView1.SelectedItems.Count>0)
{
int iPos=this.listView1.SelectedItems[0].Index;
string FileName=this.listView1.Items[iPos].SubItems[3].Text;
this.axMediaPlayer1.FileName=FileName;
this.axMediaPlayer1.Play();
}
}
else
{
MessageBox.Show("请选择歌曲!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}


private void button4_Click(object sender, System.EventArgs e)
{//暂停播放
if(this.axMediaPlayer1.FileName.Length>0)
this.axMediaPlayer1.Pause();
else
{
MessageBox.Show("请选择歌曲!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}

private void button5_Click(object sender, System.EventArgs e)
{//停止播放
if(this.axMediaPlayer1.FileName.Length>0)
this.axMediaPlayer1.Stop();
else
{
MessageBox.Show("请选择歌曲!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}

private void button6_Click(object sender, System.EventArgs e)
{//上一首歌曲
if(this.listView1.Items.Count>0)
{
if(this.listView1.SelectedItems.Count>0)
{
int iPos=this.listView1.SelectedItems[0].Index;
if(iPos>0)
{
this.listView1.Items[iPos-1].Selected=true;
string FileName=this.listView1.Items[iPos-1].SubItems[3].Text;
this.axMediaPlayer1.FileName=FileName;
this.axMediaPlayer1.Play();
}
else
{
MessageBox.Show("已经是第一首歌曲!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
}
else
{
MessageBox.Show("请选择歌曲!","信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}

private void button7_Click(object sender, System.EventArgs e)
{//下一首歌曲
if(this.listView1.Items.Count>0)
{
if(this.listView1.SelectedItems.Count>0)
{
int iPos=this.listView1.SelectedItems[0].Index;
if(iPos<this.listV