ورود

View Full Version : کنترل صفحه پخش فیلم با استفاده از ابزار mediaplayer



پدرخوانده
چهارشنبه 24 مهر 1387, 21:08 عصر
با استفاده از نمونه مثال موجود در سولیشن خود ویژوال فاکس که برای پخش فایلهای صوتی و تصویری است برنامه ای نوشته ام که متاسفانه در برخی از فرمتها و در برخی از سیستم ها مشکل دارد (یعنی اینکه در خیلی از سیستم ها بدون مشکل تمامی فرمتها را ساپورت می کند که الزاما بخاطر نصب برخی از نرم افزارها همچون xpcode, ... و یا موارد دیگر بوده است)
که با توجه به جستجو در سایت و گوگل و راهنمایی برخی دوستان نرم افزارهای مختلفی را بر روی ویندوز نصب کرده ام (جهت ست شدن دیفالت قابلیت mciplayer خود ویندوز برای ساپورت تمام فورمتها فایلهای صوتی و تصویری) ولیکن باز برنامه مذکور قابلیت پخش را ندارد (وجالبتر اینکه همین برنامه در برخی دیگر از سیستم ها چنین مشکلی نداشته و تمامی فرمتها را ساپورت می کند حتی با قیاس نرم افزارها و ... موجود در هر دو سیستم متاسفانه به جواب نرسیدم)
(حالا اگر دوستان در این مورد به جواب قاطعی رسیده اند (یعنی اینکه نرم افزار مذکور جهت اضافه کردن فورمتهای متداول (همچون mpag, dat,wmv و ....) به هسته داخلی ویندوز (البته اینجا منظور کد api مربوط به mci می باشد) ) ممنون خواهم شد که بنده را نیز راهنمایی کنند
القصه
تصمیم به تغییر روتین اصلی پخش فایلهای صوتی و تصویری در برنامه خود گرفتم و سراغ ابزار mediaplayer خود ویندوز رفتم (چرا که این ابزار در تمامی سیستمها اکثریت فورمتها را ساپورت می کند و حتی با نصب نرم افزارهای همچون xpcodec, ... قادر به پخش فورمتهای mpeg4,... نیز می باشد)
حالا در این رابطه مشکلی دارم بدین صورت که توانستم با پارامترهای مربوط از طریق کدنویسی و قرار دادن تراک بار امکان تایم لاین و کلیه گزینه های زمان جاری و پلی و پوز و استوپ و .. را پیدا کنم


oWMP= CREATEOBJECT("WMPlayer.OCX") && create media player object
owmp.URL = 'd:\1.wmv' && load multimedia file
owmp.controls.play && play file
owmp.controls.pause && pause file
owmp.controls.stop && stop file
owmp.currentMedia.duration && size of file for control with trackbar
owmp.currentMedia.durationString && size of file for show in label with hh:mm:ss
owmp.controls.currentPosition && postion of play file for show in trackbar (used in timer object)
owmp.controls.currentPositionString && posting of play file for show in label (current time)
...
...
...
owmp.close && close of mediaplayer object

ولیکن در کنترل صفحه مربوط به نمایش فیلم مشکل دارم (دقت داشته باشید که بنده مدیاپلیر را بصورت آبجکت فراخوانی کرده و تصمیم بر نمایش خود محیط اینترفیس مدیاپلیر ندارم (چرا که در نمونه مثالهای فراوانی که در اینترنت پیدا کردم اکثریت خود ocx مربوط به مدیاپلیر را فراخوانی کرده و با پارامترهای آن ، آنرا کنترل کرده اند ولی بنده تاکید دارم که به هیچ عنوان اینترفیس مربوط به مدیاپلیر در نرم افزار خود را به کاربر نمایش نداده و در پشت پرده تمامی کارها انجام شود
با توجه به مطالعه مثال mci موجود در سولیشن یک پنل از ابزار shape در فرم قرار داده و سعی در کنترل خروجی مدیاپلیر با توجه به بدست آوردن هندل مربوطه به این آبجکت هستم


DECLARE integer SetWindowPos IN User32 integer, integer, integer, integer, integer, integer, integer
Main_hWnd =_VFP.hWnd
cur_window = THISFORM.HWnd
hWin = ????? "status Mediaplayer window handle wait" ????????

x1Pos = THISFORM.player.LEFT
y1Pos = THISFORM.player.TOP
x2Pos = THISFORM.player.width
y2pos = THISFORM.player.height

*!* Use the SetWindowPos Windows function to set position and size
setWindowPos(hWin,0,x1Pos,y1Pos,x2Pos,y2Pos,0)
حال دقیقا در همان قسمتی که بدنبال بدست آوردن هندل مربوط به آبجکت مدیاپلیر هستم که متاسفانه در پارامترهای مربوطه پیدا نکردم (1) و دوم اینکه آیا اصلا این روش ، روش مناسبی برای هدایت صفحه پخش فیلم توسط این ابزار می باشد یا خیر؟!!!
و اگر برای کنترل صفحه فیلم مربوطه امکان دیگری نیز هست (مثلا کل اینترفیس مربوطه به مدیاپلیر را نمایش داده و با توجه به پارامترهای آن قسمت فیلم آن را فقط کاربر ببیند، چرا که حتی با کنترل طول و عرض آبجکت موردنظر ابزار پلی و پوز و ولوم و تایم لاین و ... در پاین ابزار حتما وجود دارد )
به هر حال ممنون میشوم دوستان نظری در این رابطه مطرح نمایند

پدرخوانده
جمعه 26 مهر 1387, 19:14 عصر
با تشکر از جناب بی نیاز که باز قبول زحمت کرده و نمونه کد html براي اين منظور راهنمایی نمودند
ولیکن متاسفانه در بحث موجود در ویژوال فاکس نتوانستم از آن بهره ای ببرم
بنده نمونه کدهای بسیاری را پیدا کردم ولیکن متاسفانه هیچ گونه بهره ای در فاکس نتوانستم از آن ببرم
البته نکته اصلی که به ذهن من می رسد بدست آوردن هندل مربوط به آبجکت مدیاپلیر می باشد.
یک نمونه به زبان وی بی (البته حدس می زنم) در لینک ذیل هست از دوستان مسلط به وی بی ممنون میشوم نمونه کد فاکس آن را ارائه نمایند.
http://social.msdn.microsoft.com/Forums/en-US/vblanguage/thread/769ac288-5dc6-4b88-97be-097dc102a6a0/

binyaz2003
جمعه 26 مهر 1387, 20:56 عصر
شما ميتونيد يک کنترل Internet Explorerرو فرم قراردهيد و از کدي که فرستادم استفاده کنيد.
اين تاپيکي هم که فرستادين درباره اتفاق نيافتادن وقايع هست در دات نت
شايد لينکهاي زير کمک کنند :
منبع sdk ويندوز مدياپلير : http://msdn.microsoft.com/en-us/library/bb262657(VS.85).aspx

پدرخوانده
شنبه 27 مهر 1387, 09:11 صبح
با تشکر از شما
بله با استفاده از این ابزار در داخل وب و نمایش وب بروزر در داخل برنامه می تواند به مقصود نائل شد
ولیکن دقت داشته باشید که همانطور که در پست اول اشاره کردم به پارامترهای دیگر همچون زمان جاری ، زمان کل فیلم و یا اسکرول بار شخصی جهت تایم لاین نیاز دارم که با این کار (پخش فیلم در داخل مدیاپلیر توسط صفحه وب) دیگر این کارها توسط کدنویسی ما امکان پذیر نیست
نسبت به مطالعه لینک ارسالی نیز ممنون ، تصور بنده بر این بود که قابلیت بدست آوردن هندل مدیاپلیر را داشت...
و در رابطه با لینک ارسالی نیز بنده آن را مطالعه کردم ولی متاسفانه نتوانستم مقصود خود را در آن بیابم.
البته در این زمینه (بحث کنترل مدیاپلیر در محیط فاکس) نمونه کدها و ... بسیاری یافتم که مثلا کنترل پلی لیست و بدست آوردن مشخصات فایل و ... را کنترل می کند (بصورت کدنویسی)
ولیکن کنترل صفحه پخش فیلم آن را جایی پیدا نکردم

در قدم اول اگر بتوانید در رابطه با بدست آوردن هندل مربوط به مدیاپلیر مرا راهنمایی کنید ممنون خواهم شد...