public void Start()
        {
            Esecuzione = new Thread((object cp) =>
            {
                if (cp == null || !(cp is CountParameter))
                {
                    MessageBox.Show("Occorre passare i parametri per il conteggio!", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else if (!FFmpeg.Loaded)
                {
                    MessageBox.Show("FFmpeg non inizializzato!", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                CountParameter conv = (CountParameter)cp;

                int Total = conv.mfsp.Root.GetNodeCount(FileSystemNodePlusLevelType.AllNode, FileSystemNodePlusType.File);

                progressBar_total.SetMaximumInvoke(Total);


                FFMpegMediaMetadataMp3 ff = new FFMpegMediaMetadataMp3();
                ff.BitRateMp3 = 320;
                long l = CalcoloSpazio(conv.mfsp.Root, conv.mfsp, ff);
                //kb
                String Post = "KB";
                double d = 0;
                if (l > 1024)
                {
                    d = l / 1024.0;//mb
                    Post = "MB";
                    if (d > 1024.0)
                    {
                        d /= 1024.0;//gb 
                        Post = "GB";
                    }
                }
                else
                    d = l;

                textBox1.SetTextInvoke(d + " " + Post);      
            });
            Esecuzione.Start(CP);

            
        }
Example #2
0
 object ICloneablePlus.Clone()
 {
     FFMpegMediaMetadataMp3 t = new FFMpegMediaMetadataMp3(this);
     return t;
 }
Example #3
0
        public static bool FlacToMp3(String Input,String Output,FFMpegMediaMetadataMp3 ConversionParameters, bool OverrideIfExist,FFmpegConvertStatusChanged OnStatusChanged=null, FFmpegConvertProgressChanged OnProgressChanged=null, bool Async = true )
        {
            if (!_Loaded)
                return false;

            if (ConversionParameters == null || ConversionParameters.SamplingRate == SamplingRateInfo.nul || ConversionParameters.SamplingRate == 0 || ConversionParameters.BitRateMp3 == 0)
                return false;

            if (CheckValidInput(Input) && CheckValidOutput(Output))
            {
                if (File.Exists(Output))
                {
                    if (OverrideIfExist)
                        File.Delete(Output);
                    else
                        return true;
                }

                MyProcess p = new MyProcess(_PathFFmpeg, "-i \"" + Input + "\" -map 0:0 -map 0:1? -c:a:0 libmp3lame  -ab "+ ConversionParameters.BitRateMp3 + "k -ar "+ConversionParameters.SamplingRate.ToStringReplace("_","")+" -map_metadata 0 -id3v2_version 3   -c:v copy \"" + Output + "\"");
                if (OnStatusChanged != null)
                {
                    p.OnStatusChanged += (ProcessStatus s) => {
                        if (s == ProcessStatus.Running)
                            OnStatusChanged(FFmpegStatus.Running, Input, Output);
                        else if (s == ProcessStatus.Stop)
                            OnStatusChanged(FFmpegStatus.Stop, Input, Output);
                    };
                }

                if (OnProgressChanged != null)
                {
                    bool AspettaLaDurata = false;
                    bool AspettaProgress = false;
                    long TotalMilliSec = 0;
                    p.OnNewLine += (string line) => {
                        if (line == null)
                            return;
                        else if (line.StartsWith("Input"))
                        {
                            AspettaLaDurata = true;
                            AspettaProgress = false;
                        }
                        else if (AspettaLaDurata && line.StartsWith("  Duration:"))
                        {
                            line = line.RemoveLeft("  Duration: ");
                            line = line.SplitAndGetFirst(',');

                            string[] ss=line.Split(':', '.');
                            if (ss.Length == 4)
                            {
                                AspettaLaDurata = false;
                                AspettaProgress = true;
                                TotalMilliSec = ss[3].ParseInt() * 10 + ss[2].ParseInt() * 1000 + ss[1].ParseInt() * 60000 + ss[0].ParseInt() * 3600000;
                            }
                            else
                            {
                                TotalMilliSec = -1;
                                AspettaLaDurata = false;
                                AspettaProgress = false;
                            }
                        }
                        else if(AspettaProgress && line.Contains("No such file or directory"))
                        {
                            OnProgressChanged(-1, Input, Output,FFmpegError.DestFolderNotFound);
                        }
                        else if (AspettaProgress && ( line.StartsWith("frame") || line.StartsWith("size") ))
                        {

                            line = line.Substring(line.IndexOf("time=") + 5, 11);
                            string[] ss = line.Split(':', '.');
                            if (ss.Length == 4)
                            {
                                long current = ss[3].ParseInt() * 10 + ss[2].ParseInt() * 1000 + ss[1].ParseInt() * 60000 + ss[0].ParseInt() * 3600000;
                                OnProgressChanged((int)((double)current / TotalMilliSec * 100), Input, Output);
                            }
                        }

                    };
                }

                p.UseShellExecute = false;
                p.RedirectStandardOutput = true;
                p.RedirectStandardError = true;
                p.CreateNoWindow = true;
                p.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                SystemService.CreateFolderSecure(SystemService.GetParent(Output));

                p.Async = Async;
                p.Start();
            }
            else
                return false;

            return true;
        }
Example #4
0
        //esporta singola cartella Convertito
        private void toolStripMenuItem4_Click(object sender, EventArgs e)
        {
            new Thread(() =>
            {
                if (listBox_playlists.SelectedItemInvoke() is Playlist)
                {
                    FolderSelectDialog fsd = new FolderSelectDialog();
                    if (fsd.ShowDialog())
                    {
                        DialogResult dr = MessageBox.Show("Sovrascrivere eventuali file esistenti?\r\n\r\nSi: il processo Sovrascriverà eventuali file già presenti con lo stesso nome\r\nNo: Il processo VERRA' comunque avviato ma, se un file è già presente nella cartella di Output, questo non verrà sovrascritto\r\nAnnulla: Il processo verrà interrotto", "Conferma Sovrascrittura", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation);
                        if (dr == DialogResult.Cancel)
                            return;
                        bool OverrideIfExist = dr == DialogResult.Yes ? true : false;

                        String destFolder = fsd.FileName;
                        Playlist p = (Playlist)listBox_playlists.SelectedItemInvoke();

                        FFMpegMediaMetadataMp3 temp = new FFMpegMediaMetadataMp3();
                        temp.BitRateMp3 = 320;
                        temp.SamplingRate = SamplingRateInfo._44100;
                        ConversionParameter cp = new ConversionParameter(ConversinType.SoloDiversi, temp, OverrideIfExist);

                        ConvertMedia CM = new ConvertMedia();
                        List<FileSystemNodePlus<MyAddittionalData>> lt = p.FileSystem.Clone().Flatten().ToList();
                        lt.ForEach(x => x.Parent = x.FirstParent);

                        CM.BeginConvertPlaylist(lt, IndexMediaLibrary, destFolder, cp);
                    }
                }

            }).Start();
        }