static void Main(string[] args) { Console.WriteLine("Hello World!"); if (args.Length != 2) { return; } List <string> files = Directory.EnumerateFiles(args[0]).ToList(); Console.WriteLine($"Using Encoder Version: {EncoderWrapper.GetEncoderVersion()}"); foreach (string file in files) { string outfile = Path.Combine(args[1], Path.GetFileNameWithoutExtension(file) + ".webp"); Image img = Image.FromFile(file); IntPtr ptr = IntPtr.Zero; ulong size = 0L; MemoryStream ms = new MemoryStream(); ms.Seek(0L, SeekOrigin.Begin); img.Save(ms, ImageFormat.Bmp); size = EncoderWrapper.EncodeBGR(ms.ToArray(), img.Width, img.Height, img.Width * 3, 100, out ptr); byte[] buffer = new byte[(int)size]; Marshal.Copy(ptr, buffer, 0, (int)size); FileStream fs = new FileStream(outfile, FileMode.Create, FileAccess.Write); fs.Write(buffer, (int)SeekOrigin.Begin, buffer.Length); fs.Flush(); fs.Close(); fs.Dispose(); ms.Close(); ms.Dispose(); img.Dispose(); //EncoderWrapper.FreeEncoder(ptr); Console.WriteLine($"File: {Path.GetFileName(file)}.webp Was Successfully Encoded"); } }
private static void EncodeTest() { Console.WriteLine($"Using Encoder Version: {EncoderWrapper.GetEncoderVersion()}"); Image img = Image.FromFile(inputFile.FullName); IntPtr ptr = IntPtr.Zero; ulong size = 0L; MemoryStream ms = new MemoryStream(); img.Save(ms, ImageFormat.Bmp); switch (pixelFormat) { case WebP.Net.PixelFormat.BGR: if (lossless) { size = EncoderWrapper.EncodeLosslessBGR(ms.ToArray(), img.Width, img.Height, img.Width * 3, 100, out ptr); } else { size = EncoderWrapper.EncodeBGR(ms.ToArray(), img.Width, img.Height, img.Width * 3, 100, out ptr); } break; case WebP.Net.PixelFormat.RGB: if (lossless) { size = EncoderWrapper.EncodeLosslessRGB(ms.ToArray(), img.Width, img.Height, img.Width * 3, 100, out ptr); } else { size = EncoderWrapper.EncodeRGB(ms.ToArray(), img.Width, img.Height, img.Width * 3, 100, out ptr); } break; case WebP.Net.PixelFormat.RGBA: if (lossless) { size = EncoderWrapper.EncodeLosslessRGBA(ms.ToArray(), img.Width, img.Height, img.Width * 4, 100, out ptr); } else { size = EncoderWrapper.EncodeRGBA(ms.ToArray(), img.Width, img.Height, img.Width * 4, 100, out ptr); } break; case WebP.Net.PixelFormat.BGRA: if (lossless) { size = EncoderWrapper.EncodeLosslessBGRA(ms.ToArray(), img.Width, img.Height, img.Width * 4, 100, out ptr); } else { size = EncoderWrapper.EncodeBGRA(ms.ToArray(), img.Width, img.Height, img.Width * 4, 100, out ptr); } break; } byte[] buffer = new byte[(int)size]; Marshal.Copy(ptr, buffer, 0, (int)size); FileStream fs = new FileStream(outputFile.FullName, FileMode.Create, FileAccess.Write); fs.Write(buffer, (int)SeekOrigin.Begin, buffer.Length); fs.Flush(); fs.Close(); fs.Dispose(); ms.Close(); ms.Dispose(); img.Dispose(); //EncoderWrapper.FreeEncoder(ptr); Console.WriteLine("File Was Successfully Encoded"); }
protected void Page_Load(object sender, EventArgs e) { string filename = ""; List <EncoderConfig> cfgs = Utils.LoadConfig(); EncoderConfig cfg = cfgs[Int32.Parse(Request.QueryString["idProfile"])]; ServiceInterface server = new ServiceInterface(); if (Request.QueryString["idChannel"] != null) { if (server.GetChannel(Int32.Parse(Request.QueryString["idChannel"])).isRadio) { bufferSize = 2560; } WebTvResult res = server.StartTimeShifting(Int32.Parse(Request.QueryString["idChannel"])); if (res.result != 0) { Utils.Log("Streamer.aspx: ERROR: StartTimeShifting failed with error: " + res.result.ToString()); Response.Output.WriteLine("ERROR: StartTimeShifting failed with error: " + res.result.ToString()); Response.End(); return; } usedCard = res.user.idCard; usedChannel = res.user.idChannel; tvServerUsername = res.user.name; if (cfg.inputMethod == TransportMethod.Filename) { filename = res.rtspURL; } else { filename = res.timeshiftFile; } } else if (Request.QueryString["idRecording"] != null) { WebRecording rec = server.GetRecording(Int32.Parse(Request.QueryString["idRecording"])); filename = rec.fileName; } else if (Request.QueryString["idMovie"] != null) { WebMovie movie = server.GetMovie(Int32.Parse(Request.QueryString["idMovie"])); filename = movie.file; } else if (Request.QueryString["idMusicTrack"] != null) { WebMusicTrack track = server.GetMusicTrack(Int32.Parse(Request.QueryString["idMusicTrack"])); filename = track.file; } else if (Request.QueryString["idTvSeries"] != null) { WebSeries series = server.GetTvSeries(Request.QueryString["idTvSeries"]); filename = series.filename; } else if (Request.QueryString["idMovingPicture"] != null) { WebMovingPicture pic = server.GetMovingPicture(Int32.Parse(Request.QueryString["idMovingPicture"])); filename = pic.filename; } if (!File.Exists(filename) && !filename.StartsWith("rtsp://")) { Utils.Log("Streamer.aspx: Requested file " + filename + " does not exist."); return; } Response.Clear(); Response.Buffer = false; Response.BufferOutput = false; Response.AppendHeader("Connection", "Keep-Alive"); Response.ContentType = "video/x-msvideo"; Response.StatusCode = 200; Stream mediaStream = null; EncoderWrapper encoder = null; Stream outStream = null; if (cfg.inputMethod != TransportMethod.Filename) { if (Request.QueryString["idChannel"] != null) { mediaStream = new TsBuffer(filename); } else { mediaStream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); } encoder = new EncoderWrapper(mediaStream, cfg); } else { encoder = new EncoderWrapper(filename, cfg); } if (cfg.useTranscoding) { outStream = encoder; } else { outStream = mediaStream; } byte[] buffer = new byte[bufferSize]; int read; try { while ((read = outStream.Read(buffer, 0, buffer.Length)) > 0) { try { Response.OutputStream.Write(buffer, 0, read); } catch (Exception) { break; // stream is closed } if (Request.QueryString["idChannel"] != null) { server.SendHeartBeat(usedChannel, usedCard, tvServerUsername); } } } catch (Exception ex) { Utils.Log("Streamer.aspx: Exception raised=" + ex.Message + Environment.NewLine + ex.StackTrace); } if (mediaStream != null) { mediaStream.Close(); } if (Request.QueryString["idChannel"] != null) { server.StopTimeShifting(usedChannel, usedCard, tvServerUsername); } encoder.StopProcess(); Response.End(); }