private void MicCapturer_CallBack(byte[] buffer) { var buf = Enc_AAC(buffer); if (buf == null) { return; } if (buf.Length == 0) { return; } //生成媒体帧 var mf = new StreamingKit.MediaFrame() { Frequency = _frequency, Samples = (short)_audioCfg.samples, IsKeyFrame = (byte)((_audioFrameIndex++ % 50) == 0 ? 1 : 0), Encoder = _audioCfg.encoder, MediaFrameVersion = 0, Channel = _channels, AudioFormat = 2, IsAudio = 1, NTimetick = Environment.TickCount, Ex = 1, Size = buf.Length, }; mf.SetData(buf); mf.MediaFrameVersion = (byte)(mf.IsKeyFrame == 1 ? 1 : 0); mf.Ex = (byte)(mf.IsKeyFrame == 1 ? 0 : 1); if (_isFirstKeyFrame) { _isFirstKeyFrame = false; var resetCodecMediaFrame = CreateResetCodecMediaFrame(mf); if (_callBack != null) { _callBack(resetCodecMediaFrame); } } if (_callBack != null) { _callBack(mf); } if (bw == null) { bw = new BinaryWriter(new System.IO.FileStream(@"D:\aac5.aac", System.IO.FileMode.Create)); } byte[] bufs = mf.GetBytes(); bw.Write(bufs.Length); bw.Write(bufs); }
public static MediaFrame CreateAudioKeyFrame(AudioEncodeCfg cfg, long timetick, byte[] data, int offset, int size) { MediaFrame mFrame = CreateAudioFrame(cfg, timetick, data, offset, size);// new // MediaFrame((byte) // 1); mFrame.MediaFrameVersion = 1; mFrame.IsKeyFrame = 1; mFrame.Frequency = cfg.Frequency; mFrame.Channel = cfg.Channel; mFrame.AudioFormat = (short)cfg.Format; mFrame.Samples = (short)cfg.Samples; mFrame.Encoder = cfg.encoder; return(mFrame); }
public static MediaFrame CreateCommandMediaFrame(bool isAudio, MediaFrameCommandType cmd, byte[] data = null) { data ??= Array.Empty <byte>(); var mf = new MediaFrame() { MediaFrameVersion = 0xff, Ex = (byte)cmd, IsKeyFrame = 0, IsAudio = (byte)(isAudio ? 1 : 0), NTimetick = 0, Size = data.Length, }; mf.SetData(data ?? Array.Empty <byte>()); return(mf); }
public static MediaFrame CreateAudioFrame(AudioEncodeCfg cfg, long timetick, byte[] data, int offset, int size) { if (cfg is null) { throw new ArgumentNullException(nameof(cfg)); } MediaFrame mFrame = new MediaFrame(0) { IsAudio = 1, IsKeyFrame = 0, NTimetick = timetick, Size = size, Offset = offset, }; mFrame.SetData(data); return(mFrame); }