تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مشغل VLC مع C#
#1
السلام عليكم ورحمة الله وبركاتة
عندى مشكله صغيرة برنامج vlc الشهير احينا بفتح علية قنوات معينة 
وعندى مشكله كا الاتى اريد اخذ لقة صورة اثناء عرض الفديو لاستخدام معين وحفظها 
الحفظ لا مشكله معة ولكن عند الضغط على التقاط صورة وعند تحويلها الى pictureBox1
تظهر بلوان اسود اريد معالم الصورة الاصلية ان تظهر فى pictureBox1 وشكرا لكم صورة توضحية ورابط السورس
السورس كود
ملاحظة فى رابط فيدو داخلى عند تشغيل البرنامج يعمل بشكل مباشر
واشكركم على المساعدة مقدما Heart

الرابط الى تم التجربة عليه 
كود :
pictureBox1.Visible = true;

           axVLCPlugin21.playlist.togglePause();

           Rectangle screenSize = new Rectangle(0, 0, 300, 300);



         //  Bitmap target = new Bitmap(screenSize.Width, screenSize.Height);



           Bitmap target = new Bitmap(100, 100);
           axVLCPlugin21.DrawToBitmap(target, screenSize);
         

           pictureBox1.Image = target;
           axVLCPlugin21.playlist.play();
           pictureBox1.Image.Save(@"C:\Pic\\kk.jpg");
الرد }}}
تم الشكر بواسطة:
#2
Heart 
تفضل 



PHP كود :
axVLCPlugin21.playlist.togglePause();
String tempPath Path.GetTempPath();
string imgPath tempPath + @"Captured.jpg";
Bitmap bmpScreenshot = new Bitmap(axVLCPlugin21.ClientRectangle.Width,axVLCPlugin21.ClientRectangle.Height);
Graphics gfxScreenshot Graphics.FromImage(bmpScreenshot);
System.Drawing.Size imgSize = new System.Drawing.Size(axVLCPlugin21.ClientRectangle.Width,axVLCPlugin21.ClientRectangle.Height);
Point ps PointToScreen(new Point(axVLCPlugin21.Bounds.XaxVLCPlugin21.Bounds.Y));
gfxScreenshot.CopyFromScreen(ps.Xps.Y00imgSizeCopyPixelOperation.SourceCopy);
bmpScreenshot.Save(imgPathSystem.Drawing.Imaging.ImageFormat.Jpeg);
MessageBox.Show("Image saved : " imgPath);
pictureBox1.Image bmpScreenshot;
axVLCPlugin21.playlist.togglePause(); 

موفق ان شاء الله
الرد }}}
تم الشكر بواسطة: asemshahen5 , issamsaidd , ابراهيم ايبو
#3
شكرا لك اخى الكريم عندى لاب توب علية كرت خارجى عند التقاط الصورة تظهر هكذا 


الرد }}}
تم الشكر بواسطة:
#4
ممكن المعالجه بطيئه عندك 

اضف بعد axVLCPlugin21.playlist.togglePause();


PHP كود :
axVLCPlugin21.playlist.togglePause();

 
       System.Threading.Thread.Sleep(1000); 

وتأكد انك حذفت كل كود Button
Take
الرد }}}
#5
اخى الكريم شكرا لك على ما قدتمة 
جربت ولم يزبط مع العلم جهاز جيل سابع معالج i5 ورام 12 وهارد ssd وكرت خارجى 4 ودخلى 2 ج
الفكره ان اضافة vlc الاولى كان بها تاخر زمنى كبير فى عرض القناة المراد مشاهدتها وبحث وجدت احد 
الاخوة فى اليبان كان عارض حل لهذه المشكله عبر اضافة vlc من من الفيجول طبقت الاعدات وشرحه وفعلا كانت 
بدون تاخر زمنى تعمل بشكل سليم ولكن احتاج اخذ صورة وتكون بجودة علية وحفظ الصورة بتاريخ اليوم والساعة والزمن 
المشروع كله هلفرعله لك وده ايضا رابط الفكره من الموقع البيبانى 
رابط السورة كود
اتمنى ان تحل مشكله الصورة وان تكون بجوده علية فى اخذها وان تحفظ بتاريخ اليوم شهر يوم ساعة ثانية م او ص
PHP كود :
[align=center string s DateTime.Now.ToString();[/align]
[
align=center           pictureBox1.Image.Save("D:\\img\\+s.jpg");[/align
وهذا هو الكود الى استخدمتة ولكن ما زبط معى وشكرا لك على تقديم الدعم

اخى الكريم جربت على جهاز مكتبى علية كرت خارجى واحد فقط اشتغل تمام بس الصورة حجمها صغير وبكسلات العرض كبيرة كيف لى ان اكبر حجم الصورة المحفوظة ولا يهم الباقى بس حجم الصورة حاليا
الرد }}}
تم الشكر بواسطة:
#6
هذا هو الكود لوكن كيف لى ان اجعلة يقبل المقسات يدويا وليس مقاس vlc نفسة 

الكود 



PHP كود :
vlcControl1.Pause();
 
           Rectangle screenSize = new Rectangle(00300300);
 
      
            Bitmap bmpScreenshot 
= new Bitmap(vlcControl1.screenSize.WidthvlcControl1.screenSize.Height);
 
           Graphics gfxScreenshot Graphics.FromImage(bmpScreenshot);
 
           
            System
.Drawing.Size imgSize = new System.Drawing.Size(vlcControl1.ClientRectangle.WidthvlcControl1.ClientRectangle.Height);
 
           Point ps PointToScreen(new Point(vlcControl1.Bounds.XvlcControl1.Bounds.Y));
 
           gfxScreenshot.CopyFromScreen(ps.Xps.Y00imgSizeCopyPixelOperation.SourceCopy);

 
          pictureBox1.Image bmpScreenshot;
 
           pictureBox1.Image.Save("D:\\x\\+s.jpg");
 
           vlcControl1.Play();
 
       
الرد }}}
تم الشكر بواسطة:
#7
جرب هذا الكود :

اي استخدم الكود التالي لتحجيم الصورة قبل تحميلها إلى البكتشر بوكس :

PHP كود :
       public Image ResizeImage(Image InputImage)
 
       {
 
           return new Bitmap(InputImage,new Size(1024,768));
 
       

ليصبح كود تحميل الصورة الى البكتشر بوكس كالتالي :

PHP كود :
           pictureBox1.Image =ResizeImage(bmpScreenshot); 

ليصبح الكود كاملا كالتالي :

PHP كود :
       private void button2_Click(object senderEventArgs e)
 
       {
 
           vlcControl1.Pause();

 
           Bitmap bmpScreenshot = new Bitmap(vlcControl1.WidthvlcControl1.Height);
 
           Graphics gfxScreenshot Graphics.FromImage(bmpScreenshot);

 
           System.Drawing.Size imgSize = new System.Drawing.Size(vlcControl1.ClientRectangle.WidthvlcControl1.ClientRectangle.Height);
 
           Point ps PointToScreen(new Point(vlcControl1.Bounds.X+8vlcControl1.Bounds.Y+8));
 
           gfxScreenshot.CopyFromScreen(ps.Xps.Y00imgSizeCopyPixelOperation.SourceCopy);

 
           pictureBox1.Image =ResizeImage(bmpScreenshot);
 
           pictureBox1.Image.Save(@"D:\Images\" + DateTime.Now.ToString("yyyy-MM-dd_hh-mm-ss tt") + "S.png", System.Drawing.Imaging.ImageFormat.Png); 
            vlcControl1.Play();
        } 
        public Image ResizeImage(Image InputImage)
        {
            return new Bitmap(InputImage,new Size(1024,768));
        } 
الرد }}}
تم الشكر بواسطة: issamsaidd
#8
شكرا جزيلا لك كثيرا
الرد }}}
تم الشكر بواسطة: asemshahen5
#9
الحمد الله والشكر الله .

موفق ان شاء الله .
الرد }}}
تم الشكر بواسطة: sendbad100 , issamsaidd
#10
شكرا لك اخى الكريم بس شفت ممكن تاخد صورة عن طريف 
كود :
axVLCPlugin21.video.takeSnapshot();
لما جربتها فى برنامج vlc الصورة جدا جدا جدا واضحة الى اقصد حد كيف يمكن عمل هذا الطريقة ووضع الصورة فى  pictureBox1
لان جودتها جدا عالية غير الكود الى جربناه
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: