意外的结束;元数据预期

时间:2014-01-19 12:26:17

标签: c# audio windows-phone-8 flacbox

我正在尝试在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],但仍然是错误。

1 个答案:

答案 0 :(得分:0)

如果我从音频文件中读取所有字节,然后使用MemoryStream将这些字节读取为IO.Stream,然后使用FlacReaderWaveOverFlacStream