PDA

View Full Version : زیر نویس در ویدئو



zahra_no
یک شنبه 08 خرداد 1390, 18:20 عصر
با سلام
من با استفاده از کامپوننت video grabber فیلمی رو پخش میکنم
و یک فایلی دارم با فرمت srt که زیر نویس فیلم میباشد.

من چطوری میتونم این زیرنویس رو در هنگام پخش فیلم پخش کنم.

ممنون از دوستان

هر ایده ای دارید لطفا دریغ نکنید. من به کمک فوری دوستان احتیاج دارم.

Mahmood_M
دوشنبه 09 خرداد 1390, 00:47 صبح
فایل SRT یک فایل متنیه که متن زیرنویس به همراه زمانی که باید نمایش داده بشه درش نوشته شده ، در زمان پخش فیلم اگر زمان فعلی فیلم با زمان درون فایل یکی بود ، متن همون زمان رو بخونید و نمایش بدید
برای درک بهتر یک فایل srt رو با نرم افزار Notepad باز کنید و متنش رو ببینید ، موفق باشید ...

zahra_no
دوشنبه 09 خرداد 1390, 10:00 صبح
در زمان پخش فیلم اگر زمان فعلی فیلم با زمان درون فایل یکی بود ، متن همون زمان رو بخونید و نمایش بدید


ممنون دوست عزیز از پاسختون.
درسته من این فایل رو به صورت متنی دیدم.

منظور شما اینه که من دونه دونه متن زیر رو در زمانهای خاص با textover نشون بدم؟؟

ولی این برنامه به صورت دینامیک. یعنی طرف خودش فایل تصویری و بعد زیر نویس رو انتخاب میکنه تا نمایش داده بشه. درست مثل نرم افزار KMplayer

Mahmood_M
دوشنبه 09 خرداد 1390, 21:35 عصر
منظور از داینامیک چیه ؟
خوب فایل تصویری مشخص میشه ، فایل SRT هم مشخص میشه ، الآن شما هم زمان فعلی فیلم رو دارید و هم متن درون فایل SRT رو و می تونید متناسب با زمان ، متن رو نمایش بدید ، حالا نمایش متن به خودتون بستگی داره ، می تونید یک Label به صورت Transparent روی نمایشگر بزارید یا با TextOut متن رو رسم کنید یا ...
یک راه برای اینکه متن از تصویر جا نمونه ( و برعکس ) ، اینه که با شروع فیلم ، زمان خط اول فایل SRT رو بخونید و همینطور متن اول رو ، نمی دونم از چه ابزاری برای نمایش فیلم استفاده می کنید و باید رویدادی مثل OnProgress یا ... داشته باشه که تغییر فریم یا Position فیلم رو اعلام کنه ، در این رویداد می تونید زمان فعلی فیلم رو با زمان خونده شده از فایل SRT مقایسه کنید ، اگر زمانها یکسان بود متن اول رو نمایش بدید و زمان و متن دوم رو بخونید و ...
البته درون این فایلها زمان پایان نمایش متن هم نوشته شده که می تونید به همین روش اون رو اعمال کنید

برای آشنایی بیشتر با ساختار فایلهای SRT به این لینک (http://en.wikipedia.org/wiki/SubRip#SubRip_text_file_format) مراجعه کنید

موفق باشید ...

zahra_no
دوشنبه 09 خرداد 1390, 23:47 عصر
دوست عزیز منظور من از داینامیک این هست که هر دفعه این فایلهای تصویری و زیر نویس عوض میشود و بستگی به انتخاب کاربر دارد. شاید از واژه درستی استفاده نکرده باشم.

من حس میکنم این روش شما یک روش ثابت یعنی برای یک فایل زیر نویس ثابت میباشد اگر نه پس من متوجه منظور شما نشدم.

من چطور میتونم این کارو بکنم میشه لطف کنین با کد نویسی بفرمائید تا بهتر متوجه شم

من از کامپوننت videobrabber و دلفی 2009 استفاده میکنم.

پیشاپیش ممنون

Felony
سه شنبه 10 خرداد 1390, 00:01 صبح
فایل ویدئو مورد نظر توسط Open Dialog یا ... باز میکنید دیگه ؟!!! خوب فایل زیر نویس مربوطه رو هم باز کنید و ازش متن رو بخونید و نمایش بدید دیگه ، توضیح از این ساده تر نمیشه !

zahra_no
سه شنبه 10 خرداد 1390, 00:07 صبح
من قسمت مقایسه زمانها رو متوجه نشدم

اینکه از داخل یک فایل متنی چطوری یک قسمتی رو بخونم و با زمان فیلم مقایسه کنم

Felony
چهارشنبه 11 خرداد 1390, 02:32 صبح
1 ساعتی بیکار بودم و براتون یک نمونه نوشتم ،البته کامل و بهینه نیست ولی ایده اولیه رو بهتون میده و میفهمید چه طور باید این کار رو انجام بدید ؛ الان با اجرای برنامه و انتخاب یک فایل تصویری و یک فایل srt و کلیک بر روی دکمه Play برنامه شروع به پخش ویدئو همراه با نمایش زیر نویس مربوطه در یک Label میکنه .

برنامه 2 تا مشکل وجود داره :

1- متن زیر نویس در زمان معین شده در فایل Srt پاک نمیشه و متن Label تا زمان رسیدن زمان نمایش زیرنویس بعدی باقی میمونه که اون رو هم میشه با چند دقیقه وقت گذاشتن درست کرد ولی من دیگه حوصله نداشتم .

2- باید برنامه رو طوری پیاده کنید که اگر کاربر فیلم رو به عقب یا جلو Move کرد ، اشاره گر خوندن زیرنویستون هم متناسب با زمان فیلم تغییر کنه که برای پیاده سازی این مورد باید مکانیزم جدیدی برای خوندن زیر نویس از فایل پیاده کنید و مکانیزم فعلی که من در برنامه نوشتم در این زمان تقریبا بی کاربرد هست .

- در برنامه از کامپوننت Video Grabber برای پخش فایل تصویری استفاده شده .

موفق باشید .