public FileConsumer(string filename, bool singleFrames = false) { _fileName = filename; _dumpSingleFrames = singleFrames; _videoAssembler = new VideoAssembler(); _audioAssembler = new AudioAssembler(); if (!singleFrames) { _videoFile = new FileStream($"{filename}.video.raw", FileMode.Create); _audioFile = new FileStream($"{filename}.audio.raw", FileMode.Create); } }
void IAudioConsumer.ConsumeAudioData(object sender, AudioDataEventArgs args) { AACFrame frame = AudioAssembler.AssembleAudioFrame( args.AudioData, AACProfile.LC, 48000, 2); if (frame == null) { return; } if (_dumpSingleFrames) { string frameFilename = $"{_fileName}.audio.{audioFrameCount}.{frame.TimeStamp}.raw"; using (FileStream fs = new FileStream(frameFilename, FileMode.CreateNew)) { fs.Write(frame.RawData, 0, frame.RawData.Length); } audioFrameCount++; } else { _audioFile.Write(frame.RawData, 0, frame.RawData.Length); } }