从C#中的FLV流中提取音频

我想从C#中的FLV流中提取音频流。 我在Google搜索并找到了FLVExtract ,但它只支持从FLV文件中提取,而不是从流中提取。

我怎样才能做到这一点?

我没有找到任何东西,所以我必须自己写。 它非常快,而且效果很好。 这是代码:

protected byte[] ExtractAudio(Stream stream) { var reader = new BinaryReader(stream); // Is stream a Flash Video stream if (reader.ReadChar() != 'F' || reader.ReadChar() != 'L' || reader.ReadChar() != 'V') throw new IOException("The file is not a FLV file."); // Is audio stream exists in the video stream var version = reader.ReadByte(); var exists = reader.ReadByte(); if ((exists != 5) && (exists != 4)) throw new IOException("No Audio Stream"); reader.ReadInt32(); // data offset of header. ignoring var output = new List(); while (true) { try { reader.ReadInt32(); // PreviousTagSize0 skipping var tagType = reader.ReadByte(); while (tagType != 8) { var skip = ReadNext3Bytes(reader) + 11; reader.BaseStream.Position += skip; tagType = reader.ReadByte(); } var DataSize = ReadNext3Bytes(reader); reader.ReadInt32(); //skip timestamps ReadNext3Bytes(reader); // skip streamID reader.ReadByte(); // skip audio header for (int i = 0; i < DataSize - 1; i++) output.Add(reader.ReadByte()); } catch { break; } } return output.ToArray(); } private long ReadNext3Bytes(BinaryReader reader) { try { return Math.Abs((reader.ReadByte() & 0xFF) * 256 * 256 + (reader.ReadByte() & 0xFF) * 256 + (reader.ReadByte() & 0xFF)); } catch { return 0; } }