我正在尝试在Windows手机中制作一个应用音频隐写术的应用。为此,我将FLAC流转换为WAV流,以便我可以轻松更改数据字节。
我将FlacBox编译为WP类库并删除了[Serializable]
,因为idk要更改它。
public List<byte> ReadToEnd(System.IO.Stream streams)
{
using (WaveOverFlacStream wav = new WaveOverFlacStream(new FlacReader(streams, false)))
{
try
{
long originalPosition = 0;
if (wav.CanSeek)
{
originalPosition = wav.Position;
wav.Position = 0;
}
try
{
byte[] readBuffer = new byte[4096];
int totalBytesRead = 0, bytesRead;
if (wav.CanRead)
while ((bytesRead = wav.Read(readBuffer, totalBytesRead, readBuffer.Length - totalBytesRead)) > 0)
{// never pass this
totalBytesRead += bytesRead;
if (totalBytesRead == readBuffer.Length)
{
...
wav只返回19MB中的44个字节
82,73,70,70,20,9,49,1,87,65,86,69,102,109,116,32,16,0,0,0,1,0,2,0,68,172,0,0,16,177,2,0,4,0,16,0,100,97,116,97,240,8,49,1
我将这些字节转换为ASCII并且我有RIFF / WAVE标题,但我仍然没有音频数据。我错过了什么?。
编辑:我使用[DataContract]
更改[Serializable]
,但仍然是错误。
答案 0 :(得分:0)
如果我从音频文件中读取所有字节,然后使用MemoryStream
将这些字节读取为IO.Stream
,然后使用FlacReader
或WaveOverFlacStream