/// <summary> /// recording audio. /// <para> /// first set inputDeviceName = null, you will get inputDeviceName list in vs output, /// </para> /// <para> /// then set inputDeviceName to your real device name and run again,you will get a audio output. /// </para> /// <para> /// if you want stop record, exit console; /// </para> /// <para>ffmpeg </para> /// </summary> /// <param name="outputFile"></param> public RecordingAudio(string outputFile, string inputDeviceName = null) { // console output FFmpegHelper.SetupLogging(logWrite: _ => Console.Write(_)); // register all device FFmpegHelper.RegisterDevice(); var dshowInput = new InFormat("dshow"); // list all "dshow" device at console output, ffmpeg does not support direct reading of device names MediaDevice.PrintDeviceInfos(dshowInput, "list", MediaDevice.ListDevicesOptions); if (string.IsNullOrWhiteSpace(inputDeviceName)) { return; } // get your audio input device name from console output // NOTE: DO NOT delete "audio=" using (MediaReader reader = new MediaReader($"audio={inputDeviceName}", dshowInput)) using (MediaWriter writer = new MediaWriter(outputFile)) { var stream = reader.Where(_ => _.Codec.Type == AVMediaType.AVMEDIA_TYPE_AUDIO).First(); writer.AddStream(MediaEncode.CreateAudioEncode(writer.Format, stream.Codec.AVCodecContext.channels, stream.Codec.AVCodecContext.sample_rate)); writer.Initialize(); AudioFrame dstFrame = AudioFrame.CreateFrameByCodec(writer[0].Codec); SampleConverter converter = new SampleConverter(dstFrame); long pts = 0; foreach (var packet in reader.ReadPacket()) { foreach (var frame in stream.ReadFrame(packet)) { foreach (var dstframe in converter.Convert(frame)) { pts += dstFrame.AVFrame.nb_samples; dstFrame.Pts = pts; foreach (var dstpacket in writer[0].WriteFrame(dstFrame)) { writer.WritePacket(dstpacket); } } } } writer.FlushMuxer(); } }
private unsafe static void Main(string[] args) { Process.Start(Environment.CurrentDirectory); FFmpegHelper.RegisterBinaries(); FFmpegHelper.SetupLogging(logWrite: _ => Trace.Write(_)); Console.WriteLine("Hello FFmpeg!"); //PngChromekeyFilter filter = new PngChromekeyFilter(@"C:\Users\IOL0ol1\Desktop\input.png", @"output.png"); //Remuxing filter = new Remuxing(@"C:\Users\Admin\Videos\Desktop\input.mp4"); //DecodeAudioToMat decodeAudio = new DecodeAudioToMat(@"C:\Users\Admin\Desktop\input.mp3"); //BitmapConverter bitmap = new BitmapConverter(); //EncodeAudioByMat encodeAudio = new EncodeAudioByMat("output.mp3"); //EncodeVideoByMat video = new EncodeVideoByMat("output.mp4", 800, 600, 1); //DecodeVideoToMat videoToImage = new DecodeVideoToMat(@"C:\Users\Admin\Videos\Desktop\input.mp4", "image"); //DecodeVideoToMat videoToImage = new DecodeVideoToMat(@"C:\Users\Admin\Desktop\out9.webm", "image"); Console.ReadKey(); }
private unsafe static void Main(string[] args) { Process.Start(Environment.CurrentDirectory); FFmpegHelper.RegisterBinaries(Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "ffmpeg")); FFmpegHelper.SetupLogging(logWrite: _ => Trace.Write(_)); Console.WriteLine("Hello FFmpeg!"); //PngChromekeyFilter filter = new PngChromekeyFilter(@"C:\Users\IOL0ol1\Desktop\input.png", @"output.png"); //Remuxing filter = new Remuxing(@"C:\Users\Admin\Videos\Desktop\input.mp4"); //DecodeAudioToMat decodeAudio = new DecodeAudioToMat(@"C:\Users\Admin\Desktop\input.mp3"); //BitmapConverter bitmap = new BitmapConverter(); //EncodeAudioByMat encodeAudio = new EncodeAudioByMat("output.mp3"); //EncodeVideoByMat video = new EncodeVideoByMat("output.mp4", 800, 600, 1); //DecodeVideoToMat videoToImage = new DecodeVideoToMat(@"C:\Users\Admin\Videos\Desktop\input.mp4", "image"); DecodeVideoWithCustomCodecScaledToMat videoScaledToMat = new DecodeVideoWithCustomCodecScaledToMat(@"C:\t\x.mp4", "image"); //DecodeVideoToMat videoToImage = new DecodeVideoToMat(@"C:\Users\Admin\Desktop\out9.webm", "image"); Console.ReadKey(); }
private static void Main(string[] args) { FFmpegHelper.RegisterBinaries(); FFmpegHelper.SetupLogging(logWrite: _ => Trace.Write(_)); Console.WriteLine("Hello FFmpeg!"); //new S64Audio(); var output = "output.mp4"; new EncodeVideoByMat(output, 800, 600, 1); Process.Start(output); //new DecodeVideoToMat(output, "images"); //new DecodeVideoWithCustomCodecScaledToMat(output, "images"); Console.WriteLine("--------------"); Console.ReadKey(); Process.Start(Environment.CurrentDirectory); }