예제 #1
0
파일: MP4Info.cs 프로젝트: vbra/Videofy
        public int GetWidthFromUrl(String url)
        {
            DFYoutube youtube = new DFYoutube(url);

            youtube.StarByte();

            String s = "";
            String temp;

            while (true)
            {
                youtube.Wait(100);
                temp = youtube.ReadString();
                if (temp != "")
                {
                    s += temp;
                    continue;
                }
                else
                {
                    temp = youtube.ErrorString();
                    if (temp != "")
                    {
                        s += temp;
                        continue;
                    }
                    else if ((s.Length > 0) & (!youtube.IsRunning))
                    {
                        break;
                    }
                }
            }
            youtube.Terminate();

            int p = s.IndexOf("(best)");

            if (p <= 0)
            {
                throw new Exception("WIDTH SEARCH ERROR");
            }
            int r, l;

            r = 0;
            while (((l = s.IndexOf(",", r + 1)) != -1) & (l < p))
            {
                r = l;
            }
            l = r + 2;
            r = s.IndexOf(" ", l);
            s = s.Substring(l, r - l - 1);

            return(int.Parse(s));
        }
예제 #2
0
        public override void Start()
        {
            ffmpeg.StarByte();
            youtube.StarByte();
            Boolean youtubeStillRun;
            String  s;
            //debug
            int i = 0;

            byte[] temp;
            bool   youtubeClosed = false;

            while (true)
            {
                if (token.token)
                {
                    break;
                }

                while ((s = ffmpeg.ErrorString()) != "")
                {
                    Console.WriteLine(s);
                }
                while ((s = youtube.ErrorString()) != "")
                {
                    Console.WriteLine(s);
                }

                while (ffmpeg.ReadCount > 0)
                {
                    temp = ffmpeg.Read();
                    if (temp != null)
                    {
                        Output.Add(temp);
                    }
                }

                while ((youtube.ReadCount > 0) & (ffmpeg.WriteCount < 2))
                {
                    temp = youtube.Read();
                    if (temp != null)
                    {
                        ffmpeg.Write(temp);
                    }
                    //    i += temp.Length;
                    //    Console.WriteLine(i);
                }

                if ((!youtubeClosed)
                    & (!youtube.IsRunning)
                    & (youtube.ReadCount == 0)
                    & ffmpeg.WriteCount == 0
                    & ffmpeg.ReadCount == 0)
                {
                    ffmpeg.Hatiko();
                    youtubeClosed = true;
                }

                if (youtubeClosed & (!ffmpeg.IsRunning) & (ffmpeg.ReadCount == 0))
                {
                    break;
                }
            }
            //debug

            Output.Complete();

            youtube.Terminate();
        }