【问题标题】:unexpected end of stream; metadata expected流的意外结束;预期元数据
【发布时间】:2014-01-19 12:26:17
【问题描述】:

我正在尝试在 windows phone 中制作一个执行音频隐写术的应用程序。为此,我将 FLAC 流转换为 WAV 流,以便轻松更改数据字节。

我将 FlacBox 编译为 WP 类库并删除 [Serializable],因为我不知道用什么来更改它。

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] 但仍然错误。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-17
      • 1970-01-01
      • 1970-01-01
      • 2017-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      相关资源
      最近更新 更多