Exemple #1
0
        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");
            }
        }
Exemple #2
0
        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");
        }
Exemple #3
0
    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();
    }