unity wav 格式音频转换为二进制文件
2017-04-19 20:21
696 查看
/// 音频WAV格式的字节数组 /// </summary> /// <returns>The to WA.</returns> /// <param name="clip">Clip.</param> public static byte[] EncodeToWAV(this AudioClip clip) { byte[] bytes = null; using (var memoryStream = new MemoryStream()) { memoryStream.Write(new byte[44], 0, 44);//预留44字节头部信息 byte[] bytesData = clip.GetData16(); memoryStream.Write(bytesData, 0, bytesData.Length); memoryStream.Seek(0, SeekOrigin.Begin); byte[] riff = System.Text.Encoding.UTF8.GetBytes("RIFF"); memoryStream.Write(riff, 0, 4); byte[] chunkSize = BitConverter.GetBytes(memoryStream.Length - 8); memoryStream.Write(chunkSize, 0, 4); byte[] wave = System.Text.Encoding.UTF8.GetBytes("WAVE"); memoryStream.Write(wave, 0, 4); byte[] fmt = System.Text.Encoding.UTF8.GetBytes("fmt "); memoryStream.Write(fmt, 0, 4); byte[] subChunk1 = BitConverter.GetBytes(16); memoryStream.Write(subChunk1, 0, 4); UInt16 two = 2; UInt16 one = 1; byte[] audioFormat = BitConverter.GetBytes(one); memoryStream.Write(audioFormat, 0, 2); byte[] numChannels = BitConverter.GetBytes(clip.channels); memoryStream.Write(numChannels, 0, 2); byte[] sampleRate = BitConverter.GetBytes(clip.frequency); memoryStream.Write(sampleRate, 0, 4); byte[] byteRate = BitConverter.GetBytes(clip.frequency * clip.channels * 2); // sampleRate * bytesPerSample*number of channels memoryStream.Write(byteRate, 0, 4); UInt16 blockAlign = (ushort)(clip.channels * 2); memoryStream.Write(BitConverter.GetBytes(blockAlign), 0, 2); UInt16 bps = 16; byte[] bitsPerSample = BitConverter.GetBytes(bps); memoryStream.Write(bitsPerSample, 0, 2); byte[] datastring = System.Text.Encoding.UTF8.GetBytes("data"); memoryStream.Write(datastring, 0, 4); byte[] subChunk2 = BitConverter.GetBytes(clip.samples * clip.channels * 2); memoryStream.Write(subChunk2, 0, 4); bytes = memoryStream.ToArray(); } return bytes; }
相关文章推荐
- 用 python 脚本,把当前目录及子目录下的 wav 音频文件转换为 flac 格式
- 如何将语音文件转换为Asterisk可以播放的音频格式文件(.wav)
- Java实现音频格式转换 WAV---mp3,可使音频压缩
- PCM音频文件(.wav)压缩成ADPCM(.wav) ,wav文件分析,wav 文件格式
- licenses.licx 未能将许可证文件“licenses.licx”转换为二进制资源。文件“lc.exe”的格式无效。
- Android开发 使用Lame把音频文件转换成mp3格式
- C#二进制格式与文件相互转换
- 关于ffmpeg 的总结(一个linux 下 集 屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命令)
- 将Xml文件从文本格式转换为二进制格式可以划分为六个步骤
- 关于ffmpeg 的总结(一个linux 下 集 屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命令)
- 关于ffmpeg 的总结(一个linux 下 集 屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命
- WAV音频文件格式
- [转]关于ffmpeg 的总结(一个linux 下 集 屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命令)
- Android开发 使用Lame把音频文件转换成mp3格式
- Java实现音频格式转换 WAV—mp3,可使音频压缩
- 关于ffmpeg 的总结(一个linux 下 集 屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命令)
- wave格式音频文件采样率转换
- [转]关于ffmpeg 的总结(一个linux 下 集 屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命令)
- iphone开发 服务器、android、iphone音频文件播放和传输 amr和wav的转换
- 关于ffmpeg 的总结(一个linux下集屏幕录像录音,音频视频转换,合并音频视频文件,格式转换于一身的命令)