已经问了一个多星期了,实在不想问这个转换问题了,原以为就快解决了,但又遇到了问题。o(︶︿︶)o 唉,纠结。微软的ppt可以读取MP3文件,但是当插入mp3文件的时候不能将mp3文件作为一个对象插入到ppt中,插入的只是一个路径,而wav文件却可以,因为它只允许wav文件这样做,但是,如果将MP3文件用代码直接转换成wav文件,文件将是原来mp3的数倍大小,而且转换速度也不容乐观;我找资料了解到了ppt读取wav文件的特点,只读取它的头部(这是我在一个牛人的博客里面看到的),所以我想将每个mp3文件加一个wav文件头。
各位大虾,我现在已经知道了如何读取mp3文件,知道如何操作mp3文件了,但是现在面临一个问题了,如何给mp3文件添加文件头,我看了一下wav文件的文件头格式,有42个字节,有的可能还有44个字节,格式是这样的
RIFF10018WAVEfmt16111102518data9981,数字代表一些值,字母是wav文件的一些标志,当我将这一行代码插入到每个MP3文件的时候,把mp3文件在此插入到ppt中,仍旧是个地址,没有插入整个MP3对象,请问这是什么原因。谢谢。
由于此问题困扰太久,急需解决,所以多给点分了,呵呵
下面是我的代码:
private FileStream fs;
//MP3文件路径
string filename = "F:\\1.mp3";
//42个字节的wav文件头部
byte[] wavhead = new byte[42] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
fs = new FileStream(filename, FileMode.Open, FileAccess.ReadWrite);
wavhead = System.Text.Encoding.GetEncoding("GBK").GetBytes("RIFF10018WAVEfmt16111102518data9981");
fs.Seek(0, SeekOrigin.Begin);
fs.Write(wavhead, 0, wavhead.Length);
fs.Read(head, 0, head.Length);
fs.Seek(-128, SeekOrigin.End);
fs.Read(tail, 0, 128);