示例#1
0
        static void Main(string[] args)
        {
            StreamWriter TimeWriter   = new StreamWriter(@"C:\Users\tyfr_\Desktop\Times.txt");
            Stopwatch    Txthazirlama = new Stopwatch();
            Stopwatch    Cmdyazma     = new Stopwatch();

            Txthazirlama.Start();
            // args = "7 Videoadi.mp4 26153 C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\ACI_2#7263#1#30~C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\AÇIK#7449#1#35 C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\ C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)".Split(' ');
            args = "7 Videoson1.mp4 26153 C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\ACİL#7268#1#37~C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\AÇIK#7549#1#38~C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\AÇIKLAMAK_1#7449#1#40~C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\AÇILMAK_2#8449#1#42 C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\Outfile\\ C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)".Split(' ');
            //args = "7 Videoson.mp4 26153 C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(Alpha)\\png2#5454#1#62 C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\ C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)".Split(' ');

            //args = "7 Videoson.mp4 26153 C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\ACİL#7268#1#37~C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\ACİL#7268#1#37~C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\ACİL#7268#1#37~C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\ACİL#7268#1#37~C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\ACİL#7268#1#37~C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\ACİL#7268#1#37~C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\ACİL#7268#1#37~C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\ACİL#7268#1#37~C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\ACİL#7268#1#37~C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\ACİL#7268#1#37~C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\ACİL#7268#1#37~C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\ACİL#7268#1#37~C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\ACİL#7268#1#37~C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\ACİL#7268#1#37~C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\AÇIK#7549#1#38~C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\AÇIKLAMAK_1#7449#1#40~C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\AÇILMAK_2#8449#1#42 C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)\\Outfile\\ C:\\Users\\tyfr_\\Desktop\\Frame_to_Video\\Frames(No_Alpha)".Split(' ');


            FFmpeg ffmpeg = new FFmpeg();

            string[] pixeltest;
            String   VideoName      = args[1].Split('.')[0];
            String   VideoPath      = args[4].Replace("%20", " ");
            String   TransitionPath = args[5].Replace("%20", " ");
            String   CodecPath      = @"C:/Program Files/ffmpeg/bin";  //ffmpeg windows codec kurulumun yapıldığı yol
            String   FramelistName  = VideoName;                       //Frame Listesi için oluşan txt adı
            String   FramelistPath  = @"C:\Program Files\ffmpeg\bin\"; // Framelist in yolu
            String   VideoUzantisi  = "webm";

            try
            {
                if (Convert.ToInt32(args[0]) == 7)//translator id ye göre framelerin belirli piksellerin rgb kontrolü
                {
                    pixeltest = "150#200#49#49#57.220#200#49#49#57.150#300#137#94#86.220#300#137#94#86.200#70#137#94#86".Split('.');
                }
                else
                {
                    pixeltest = "150#200#49#49#57.220#200#49#49#57.150#300#137#94#86.220#300#137#94#86.200#70#137#94#86".Split('.');
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Piksel kontrolü Hatası" + ex.ToString());
                pixeltest = null;
            }
            ffmpeg.Function(args[3], TransitionPath, FramelistPath, FramelistName, pixeltest);

            //Hazırlanan framelerin ffmpeg(CMD) ile yazılması
            string command = "cd " + CodecPath + " & ffmpeg -benchmark -safe 0 -r 29 -f concat -i " + FramelistName + ".txt -pix_fmt yuva420p -c:v libvpx-vp9 -threads 3 " + @VideoPath + VideoName + "." + VideoUzantisi;

            try
            {
                Process          process   = new Process();
                ProcessStartInfo startInfo = new ProcessStartInfo("cmd")
                {
                    //    RedirectStandardInput = true,
                    //    RedirectStandardOutput = true,
                };
                startInfo.Verb             = "runas";
                startInfo.WorkingDirectory = @"C:/Program Files/ffmpeg/bin";//codec exe nin kurulu olduğu dizin
                startInfo.FileName         = "cmd.exe";
                startInfo.Arguments        = "/user:tyfr \"cmd /K " + command /*+ "& exit"*/;


                process.StartInfo = startInfo;


                process.Start();

                Txthazirlama.Stop();
                Cmdyazma.Start();
                //process.BeginOutputReadLine();

                //StreamWriter inputWriter = process.StandardInput;
                //StreamReader outputReader = process.StandardOutput;
                //StreamReader errorReader = process.StandardError;



                Console.WriteLine("Video Oluşturuluyor");
                process.WaitForExit();

                if (process.HasExited)
                {
                    File.Delete(FramelistPath + FramelistName + ".txt");//Cmd kapandığında txt dosyası siliniyor

                    Cmdyazma.Stop();
                    TimeWriter.WriteLine((Cmdyazma.ElapsedMilliseconds / 1000).ToString() + " saniye yazılma işlemi " + "\n" + (Txthazirlama.ElapsedMilliseconds / 1000).ToString() + " Saniye Araframe ve liste oluşturma ");
                    TimeWriter.Close();
                    process.Kill();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Video oluşturma Hatası" + ex.ToString());
            }
        }
示例#2
0
        public void Function(string arg, string TransitionPath, string framelistpath, string framelistname, string[] pixeltest)
        {
            try
            {
                string       duration  = "duration 0.1";
                StreamWriter Framelist = new StreamWriter(framelistpath + framelistname + ".txt");
                Console.WriteLine(framelistpath + framelistname + ".txt");
                string[] framefiles = arg.Split('~');
                //C:\\inetpub\\wwwroot\\node1\\IMG\\\\7\\3\\LOADING#7263#1#77 yapı
                for (int i = 0; i < framefiles.Length; i++)
                {
                    //Framelist.WriteLine("duration 0.0033");
                    //Daha önceden oluşmuş geçiş frameleri olup olmadığına bakılan yer
                    if (i > 0)
                    {
                        //Console.WriteLine("Geçiş Frame Var");

                        string TransitionPathcheck = TransitionPath + "\\" + Frame(framefiles[i - 1])[1] + "_" + Frame(framefiles[i])[1];
                        if (Directory.Exists(TransitionPathcheck)) //Geçiş Frame kalsörü var mı ?
                        {
                            try
                            {
                                //Varsa framelistesine ekleniyor
                                if (File.Exists(TransitionPathcheck + @"\1.png") == true &&
                                    File.Exists(TransitionPathcheck + @"\2.png") == true &&
                                    File.Exists(TransitionPathcheck + @"\3.png") == true)
                                {
                                    Framelist.WriteLine("file '" + TransitionPathcheck + @"\1.png'");
                                    Framelist.WriteLine(duration);
                                    Framelist.WriteLine("file '" + TransitionPathcheck + @"\2.png'");
                                    Framelist.WriteLine(duration);
                                    Framelist.WriteLine("file '" + TransitionPathcheck + @"\3.png'");
                                    Framelist.WriteLine(duration);
                                }
                            }
                            catch (Exception ex)
                            {
                                Directory.Delete(TransitionPathcheck);
                                Console.WriteLine("Geçiş Frame Klasörü mevcut ama içeriği boş" + ex.ToString());
                            }
                        }
                        else
                        {
                            //Yoksa Ara-frameler oluşturuluyor
                            Bitmap LeftImage  = new Bitmap(Frame(framefiles[i - 1])[0] + @"\" + Frame(framefiles[i - 1])[3] + @".png");
                            Bitmap RightImage = new Bitmap(Frame(framefiles[i])[0] + @"\" + Frame(framefiles[i])[2] + @".png");

                            Directory.CreateDirectory(@TransitionPathcheck);

                            FFmpeg.GetImage(LeftImage, RightImage, 0.75f, 0.25f, TransitionPathcheck + @"\1.png");
                            FFmpeg.GetImage(LeftImage, RightImage, 0.50f, 0.50f, TransitionPathcheck + @"\2.png");
                            FFmpeg.GetImage(LeftImage, RightImage, 0.25f, 0.75f, TransitionPathcheck + @"\3.png");
                            //Oluşan Framelerin piksel kontrolü
                            //Console.WriteLine("Geçiş Frame Oluşturuluyor . Folder Path " + @TransitionPathcheck);
                            //Oluşturulan Frameler listeye ekleniyor
                            Framelist.WriteLine("file '" + TransitionPathcheck + @"\1.png'");
                            Framelist.WriteLine(duration);
                            Framelist.WriteLine("file '" + TransitionPathcheck + @"\2.png'");
                            Framelist.WriteLine(duration);
                            Framelist.WriteLine("file '" + TransitionPathcheck + @"\3.png'");
                            Framelist.WriteLine(duration);
                        }
                    }
                    string[] fileArray = Directory.GetFiles(Frame(framefiles[i])[0]);
                    //dosya yolundaki frameleri alıyor

                    ArrayList liste = new ArrayList();
                    //Bu frameleri listeliyor
                    foreach (string item in fileArray)
                    {
                        liste.Add(Convert.ToInt32(Path.GetFileNameWithoutExtension(item)));
                    }
                    liste.Sort();
                    for (int j = Convert.ToInt32(Frame(framefiles[i])[2]) - 1; j < Convert.ToInt32(Frame(framefiles[i])[3]); j++)
                    {
                        //Console.WriteLine(Frame(framefiles[i])[0] + @"\" + liste[j] + ".png");
                        Bitmap img = new Bitmap(Frame(framefiles[i])[0] + @"\" + liste[j] + ".png");
                        //pikselkontrolü listesi id 7
                        if (ColorTest(Frame(framefiles[i])[0] + @"\" + liste[j] + ".png", pixeltest) == true)
                        {
                            Framelist.WriteLine(Frame("file '" + framefiles[i])[0] + @"\" + liste[j] + ".png'");
                            Framelist.WriteLine(duration);
                        }
                        else
                        {
                            Console.WriteLine("Frame istenilen standartta değil . Frame Path:" + Frame(framefiles[i])[0] + @"\" + liste[j] + ".png");
                        }
                        //Console.WriteLine(Frame(framefiles[i])[0] + @"\" + liste[j] + ".png");
                    }
                }
                Framelist.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Frame Listesi Oluşturmada Hata" + ex.ToString());
            }
        }