انجمن تخصّصی کانستراکت

نسخه‌ی کامل: نحوه ساخت نرم افزار ویرایشگر زیرنویس
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام !

من میخواستم یه نرم افزار ویرایشگر زیرنویس واسه کامپیوتر بسازم اما وقتی بهش فک کردم به چند تا بم بست خوردم !


همون طور میدونین فایل srt ( فایل زیرنویس ) رو میشه با نوت پد ویندوز ویرایش کرد و چیدمانش به این شکله :

number
00:00:00,000 --> 00:00:00,00
text

من میخوام نرم افزارم بتونه این عبارات رو توی یه فایل نوت پد به فرمت زیر نویس یعنی srt ذخیره کنه و خروجی بده !

همچین چیزی رو میشه با کانس دراورد ؟
بله میشه
من اگر وقت کردم واستون سورسشو می سازم
(1399/2/31، 11:50 عصر)oak' نوشته است: [ -> ]بله میشه
من اگر وقت کردم واستون سورسشو می سازم

 

ممنون میشم اگه اینکارو بکنین !

یه سوال دیگه :

بخوام امواج صوتی رو به صورت موج نشون بده ، میشه ؟ که بشه انتخاب کرد از توش که از اول اینجای این موج تا اینجاش این متنو ( زیرنویس )نشون بده !
 
(1399/3/1، 08:34 عصر)avidsaraji نوشته است: [ -> ]
(1399/2/31، 11:50 عصر)oak نوشته است: [ -> ]بله میشه
من اگر وقت کردم واستون سورسشو می سازم

ممنون میشم اگه اینکارو بکنین !

یه سوال دیگه :

بخوام امواج صوتی رو به صورت موج نشون بده ، میشه ؟ که بشه انتخاب کرد از توش که از اول اینجای این موج تا اینجاش این متنو ( زیرنویس )نشون بده !
 
میشه ولی باید مقدار دسی بل صدا رو تشخیص بدین و بعد به کمک نسبت های مثلثاتی اسپکتروگرام صدا رو رسم کنین. در اصل میتونه یه جور تابع سینوسی یا کسینوسی باشه که حالا یه انشعاباتی هم داره. باید بتونین یه ضابطه مناسب برای تابع سینوسی یا کسینوسی تعیین کنین.
اگر تازه کار هستین یکم دشواره.
موفق باشین.
دوست عزیز من متاسفانه وقت نکردم واست اون سورسو بسازم
اما وقتی یکی از همین نرم افزار های ادیت ساب تایتل رو دیدم متوجه قضیه شدم
همچنین وقتی یه فایل زیرنویس رو برسی کردم
اصلا کاری نداره
در کانستراکت و زبان های برنامه نویسی سطح بالا ، مقوله ای به نام اسپلیت (split) داریم که با استفاده از اون میتونی کار ها رو انجام بدی :
نمونه من این خط رو از فایل متنی دریافت کردم :
کد:
Dialogue: 0,0:04:16.79,0:04:18.91,Default,,0,0,0,,‫میدونی‌ بخاطر همین چقدر تو دردسر افتادیم؟
اینجا باید از اسپلیتور استفاده کنید که در اکسپرشن های سیستم هست و کلمه Dialogue رو جدا کنید
اینجوری :
کد:
tokenat("Dialogue: 0,0:04:16.79,0:04:18.91,Default,,0,0,0,,‫میدونی‌ بخاطر همین چقدر تو دردسر افتادیم؟",1, ": ")
یه توضیح راجع به توکن ات
توکن ات متنی رو میگیره و بر اثا یه سری تنظیمات اونو به دو قسمت تقسیم می کنه
اینکه از کجا و چجوری و کدوم قسمت رو نمایش بده دست شماست 
وقتی اکسپرشن سیستمی توکن ات رو وارد می کنید همچین چیزی میبینید :
کد:
tokenat(Text, Index, Separator)
خوب ما باید هر سه قسمت رو پر کنیم 
قسمت اول text که ما همون مقدار"Dialogue: 0,0:04:16.79,0:04:18.91,Default,,0,0,0,,‫میدونی‌ بخاطر همین چقدر تو دردسر افتادیم؟"رو وارد می کنیم
بعد میریم سراغ قسمت سوم یعنی separator ( ایندکس رو بعد توضیح میدم)
خب اینجا مقدار " :" بهش میدیم
حالا سیستم قسمت پشت " :" رو از قسمت بعد از اون جدا کرد. یعنی :
0 : Dialogue
1 : 0,0:04:16.79,0:04:18.91,Default,,0,0,0,,‫میدونی‌ بخاطر همین چقدر تو دردسر افتادیم؟
اما سیستم از کجا بداند که ما کدا بخش را می خواهیم ؟؟
اینجاست که باید ایندکس رو توضیح بدم
ایندکس میخواد بدونه کدوم قسمت رو میخوای
ممکنه تعداد این بخش ها بیشتر از دو تا هم باشه
پس ما میایم و مقدار ایندکس رو میزاریم روی 1 یعنی من مقدار شماره یک رو میخوام. (توجه شمارش از صفر شروع میشه)
چون ما میخوایم که کلمه Dialogue حذف بشه بنار این به ما مقدار 0,0:04:16.79,0:04:18.91,Default,,0,0,0,,‫میدونی‌ بخاطر همین چقدر تو دردسر افتادیم؟ رو دریافت خواهیم کرد
این مساله برای بقیه قسمت ها هم میتونه استفاده بشه.

 
(1399/3/2، 06:05 صبح)oak' نوشته است: [ -> ]دوست عزیز من متاسفانه وقت نکردم واست اون سورسو بسازم
اما وقتی یکی از همین نرم افزار های ادیت ساب تایتل رو دیدم متوجه قضیه شدم
همچنین وقتی یه فایل زیرنویس رو برسی کردم
اصلا کاری نداره
در کانستراکت و زبان های برنامه نویسی سطح بالا ، مقوله ای به نام اسپلیت (split) داریم که با استفاده از اون میتونی کار ها رو انجام بدی :
نمونه من این خط رو از فایل متنی دریافت کردم :
کد:
Dialogue: 0,0:04:16.79,0:04:18.91,Default,,0,0,0,,‫میدونی‌ بخاطر همین چقدر تو دردسر افتادیم؟
اینجا باید از اسپلیتور استفاده کنید که در اکسپرشن های سیستم هست و کلمه Dialogue رو جدا کنید
اینجوری :
کد:
tokenat("Dialogue: 0,0:04:16.79,0:04:18.91,Default,,0,0,0,,‫میدونی‌ بخاطر همین چقدر تو دردسر افتادیم؟",1, ": ")
یه توضیح راجع به توکن ات
توکن ات متنی رو میگیره و بر اثا یه سری تنظیمات اونو به دو قسمت تقسیم می کنه
اینکه از کجا و چجوری و کدوم قسمت رو نمایش بده دست شماست 
وقتی اکسپرشن سیستمی توکن ات رو وارد می کنید همچین چیزی میبینید :
کد:
tokenat(Text, Index, Separator)
خوب ما باید هر سه قسمت رو پر کنیم 
قسمت اول text که ما همون مقدار"Dialogue: 0,0:04:16.79,0:04:18.91,Default,,0,0,0,,‫میدونی‌ بخاطر همین چقدر تو دردسر افتادیم؟"رو وارد می کنیم
بعد میریم سراغ قسمت سوم یعنی separator ( ایندکس رو بعد توضیح میدم)
خب اینجا مقدار " :" بهش میدیم
حالا سیستم قسمت پشت " :" رو از قسمت بعد از اون جدا کرد. یعنی :
0 : Dialogue
1 : 0,0:04:16.79,0:04:18.91,Default,,0,0,0,,‫میدونی‌ بخاطر همین چقدر تو دردسر افتادیم؟
اما سیستم از کجا بداند که ما کدا بخش را می خواهیم ؟؟
اینجاست که باید ایندکس رو توضیح بدم
ایندکس میخواد بدونه کدوم قسمت رو میخوای
ممکنه تعداد این بخش ها بیشتر از دو تا هم باشه
پس ما میایم و مقدار ایندکس رو میزاریم روی 1 یعنی من مقدار شماره یک رو میخوام. (توجه شمارش از صفر شروع میشه)
چون ما میخوایم که کلمه Dialogue حذف بشه بنار این به ما مقدار 0,0:04:16.79,0:04:18.91,Default,,0,0,0,,‫میدونی‌ بخاطر همین چقدر تو دردسر افتادیم؟ رو دریافت خواهیم کرد
این مساله برای بقیه قسمت ها هم میتونه استفاده بشه.

 

 
راستش من تازه کار نیستم ولی خدای کانس هم نیستم ! همون متوسط ! اینچیزایی که گفتین رو زیاد نفهمیدم ! اگه لطف کنین و یه سورس ساده که کار های زیر رو انجام بده برام بسازین خیلی عالی میشه ! اون امواج رو هم نمیخوام نشون بده ! بیخیال ! همین نکات زیر باشه توش کافیه !

قابلیت ایمپورت فیلم

نمایش ساعت و دقیقه و ثانیه و میلی ثانیه برای فیلم

چهار تا فیلد برای هر خط ( هر خط باید یه زیر نویس باشه ) فیلد اول شماره زیر نویس ، فیلد دوم زمان شروع زیر نویس ، فیلد سوم متن زیر نویس و فیلد چهارم زمان پایان زیر نویس

و در نهایت امکان ذخیره زیر نویس در یک فایل srt

اگر این سورسو بسازین در این ماه مبارک ، همواره دعاتون میکنم ! لطفا ! خیلی لازم دارمش ! البته توجه کنین که نمیخوام از سورس شما استفاده کنم ، ازش یاد میگیرم و با گرافیک خودم دوباره یا توجه به قواعد خودم میسازمش !

لطفا ...