انجمنهای فارسی اوبونتو
کمک و پشتیبانی => نرمافزارهای چندرسانهای => نویسنده: pld در 07 تیر 1394، 10:01 بظ
-
سلام دوستان. این یک نوشته قدیمی از وبلاگ "بیت نیم سوز" هست:
اضافه کردن زیرنویس به فیلم
این دستگاههای ویدئو پلیر که دایوایکس میخونن و فلش و از این حرفها، معمولا فایل زیرنویس رو هم میتونن از فایل srt نمایش بدن، ولی متاسفانه فقط انگلیسی رو، و تمام اونچیزهایی که من دیدم با فارسی مشکل داشتن :(
از طرفی تو خونه ما ترجیح بر دیدن فیلم با تلویزیونه، که اگه اینکار رو هم باهاش انجام ندیم کلا میشه یه وسیله بی مصرف!!!
اینه که گشتم دنبال یه راهی برای اینکار، و راه حل mplayer بود. البته قسمت mencoder این برنامه. -نمیدونم چرا با ffmpeg موفق نشدم :)-
یه اسکریپت ساده نوشتم که اینکار رو برام انجام میده :) اینه :
#!/bin/bash
movie_file=<code>zenity --file-selection --title="Choose movie file"</code>
echo $movie_file
sub_file=<code>zenity --file-selection --title="Choose subtitle file"</code>
echo $sub_file
sub_encoding=<code>zenity --entry --title="Sub title encoding" --text="Your subtitle encoding :" --entry-text="windows-1256"</code>
echo $sub_encoding
scale=<code>zenity --scale --title="Sub font text scale" --value=3 --min-value=1 --max-value=10</code>
echo $scale
mencoder "$movie_file" -oac copy -ovc xvid \
-xvidencopts bitrate=687 -sub "$sub_file"\
-subcp $sub_encoding -subfont-text-scale $scale \
-o "$movie_file".out.avi
خیلی سادست، فقط اینکه اگه هر قسمت رو لغو کنید، کار ادامه پیدا میکنه، با Ctrl+C متوقفش کنید :) حسش نبود خیلی امکانات اضافه کنم براش.
-oac copy هم گاهی جواب نمیده -تو قسمت آخر اسکریپت-، مثلا برای فایلهای mkv، اون مواقع بد نیست بزنید : oac pam یا هر چیز دیگه ای.
البته چون تبدیل به divx صورت میگیره این اسکریپت کارش طول میکشه :)
من از این سر در نیاوردم. امیدوارم کمک کنید چون میدونم خیلیها مشکل قرار دادن زیرنویس اون هم فارسی روی ویدیو رو دارن
ممنون
-
قرار دادن زیرنویس که خب کاری نداره!
میتونی از برنامه ی mkvmerge GUI استفاده کنی که زیرنویس را به صورت سافت ساب با فیلم هماهنگ میکنه, که هر وقت زیرنویس را برداری با تنظیمات پلیر و بذاری وقتی هم فیلم را باز میکنی زیرنویس خود به خود روی فیلم هست !!۱
اما سوال :
چرا هاردساب ؟؟؟؟؟؟
-
قرار دادن زیرنویس که خب کاری نداره!
میتونی از برنامه ی mkvmerge GUI استفاده کنی که زیرنویس را به صورت سافت ساب با فیلم هماهنگ میکنه, که هر وقت زیرنویس را برداری با تنظیمات پلیر و بذاری وقتی هم فیلم را باز میکنی زیرنویس خود به خود روی فیلم هست !!۱
اما سوال :
چرا هاردساب ؟؟؟؟؟؟
:o
ایشون میخواهند هاردساب کنند ! باهم فرق داره
-
قرار دادن زیرنویس که خب کاری نداره!
میتونی از برنامه ی mkvmerge GUI استفاده کنی که زیرنویس را به صورت سافت ساب با فیلم هماهنگ میکنه, که هر وقت زیرنویس را برداری با تنظیمات پلیر و بذاری وقتی هم فیلم را باز میکنی زیرنویس خود به خود روی فیلم هست !!۱
اما سوال :
چرا هاردساب ؟؟؟؟؟؟
:o
ایشون میخواهند هاردساب کنند ! باهم فرق داره
بله اما ایشون خودشونم گفتند (قرار دادن زیرنویس روی ویدو) خب مگه سافت ساب چه اشکالی داره ؟؟؟؟
شما میخواید همیشه وقتی فیلم باز میشه, زیرنویس بیاد بدون فایل اضافه, که اون برنامه ای که معرفی کردم این امکان را میده و تازه هر وقت اراده کنیم میتونیم ساب را جدا کنیم.
-
قرار دادن زیرنویس که خب کاری نداره!
میتونی از برنامه ی mkvmerge GUI استفاده کنی که زیرنویس را به صورت سافت ساب با فیلم هماهنگ میکنه, که هر وقت زیرنویس را برداری با تنظیمات پلیر و بذاری وقتی هم فیلم را باز میکنی زیرنویس خود به خود روی فیلم هست !!۱
اما سوال :
چرا هاردساب ؟؟؟؟؟؟
:o
ایشون میخواهند هاردساب کنند ! باهم فرق داره
بله اما ایشون خودشونم گفتند (قرار دادن زیرنویس روی ویدو) خب مگه سافت ساب چه اشکالی داره ؟؟؟؟
شما میخواید همیشه وقتی فیلم باز میشه, زیرنویس بیاد بدون فایل اضافه, که اون برنامه ای که معرفی کردم این امکان را میده و تازه هر وقت اراده کنیم میتونیم ساب را جدا کنیم.
معمولا هارد ساب زمانی استفاده میشه که فایل خروجی حجم کمتری نسبت به فایل اصلی داشته باشه با همون کیفیت اصلی . برای ایجاد هارد ساب خیلی راحت از برنامه HandBrake استفاده کنید.
-
قرار دادن زیرنویس که خب کاری نداره!
میتونی از برنامه ی mkvmerge GUI استفاده کنی که زیرنویس را به صورت سافت ساب با فیلم هماهنگ میکنه, که هر وقت زیرنویس را برداری با تنظیمات پلیر و بذاری وقتی هم فیلم را باز میکنی زیرنویس خود به خود روی فیلم هست !!۱
اما سوال :
چرا هاردساب ؟؟؟؟؟؟
:o
ایشون میخواهند هاردساب کنند ! باهم فرق داره
بله اما ایشون خودشونم گفتند (قرار دادن زیرنویس روی ویدو) خب مگه سافت ساب چه اشکالی داره ؟؟؟؟
شما میخواید همیشه وقتی فیلم باز میشه, زیرنویس بیاد بدون فایل اضافه, که اون برنامه ای که معرفی کردم این امکان را میده و تازه هر وقت اراده کنیم میتونیم ساب را جدا کنیم.
ببین مثلا من الان میخوام یک فیلم با زیر نویس داشته باشم و خروجی هم مثلا wma , mp4 باشه که مثلا تو پلیر معمولی اجرا کنم
و زیرنویس روی فیلم باشه یا به عنوان مثال قابل حذف شدن نباشه روی فیلم حک شده باشه از هارد ساب استفاده میشه فرایند هاردساب کردن هم کمی زمان بر هست من با رزبری تست کردم زمان زیادی رو منتظر بودم تا کامل بشه
مثل قراردادن یک لوگو روی فیلم هست
-
قرار دادن زیرنویس که خب کاری نداره!
میتونی از برنامه ی mkvmerge GUI استفاده کنی که زیرنویس را به صورت سافت ساب با فیلم هماهنگ میکنه, که هر وقت زیرنویس را برداری با تنظیمات پلیر و بذاری وقتی هم فیلم را باز میکنی زیرنویس خود به خود روی فیلم هست !!۱
اما سوال :
چرا هاردساب ؟؟؟؟؟؟
mkvmerge خوبه ولی به هارد ساب کردن اون روی فایل ویدیو نیاز دارم
الان handbrake رو تست میکنم. اگه یادم باشه یا ورژنهای قبلیش مشکل داشتم.
-
mkvmerge خوبه ولی به هارد ساب کردن اون روی فایل ویدیو نیاز دارم
الان handbrake رو تست میکنم. اگه یادم باشه یا ورژنهای قبلیش مشکل داشتم.
اهان حالا شد!
پس شما حتما به هارد ساب نیاز داری و یه اتچ زیرنویس به صورت معمولی نمیخوای!
باید بگم handbrake جزو بهترین هاست, کار کردن باش یکم سخته حتما وقتی نصب کردی, چند آموزش کار باش بخون !!!!
FFmpeg را هم تست کن !(خودم هند بریک را ترجیح میدم)
اینم لینک نحوه ی اد هارد ساب و سافت ساب به فیلم با handbrake :
http://www.winxdvd.com/resource/handbrake-subtitle-guide.htm
-
handbrake
خیلی خوب شده. الان تنها مشکلی که دارم اینه که encoding رو نمیدونم. وقتی که با smplayer اجرا میکنم، زیرنویس از نوع arabic - windows 1256 هست. توی برنامه این رو بین encodingهاش نداره. البته برنامه ISO-8895-6 رو داره که اون هم یک استاندارد برای arabic encoding هست ولی مشکل اینه که بیشتر زیرنویسها توی ویندوز تولید میشه و windows1256 هستن.
-
handbrake
خیلی خوب شده. الان تنها مشکلی که دارم اینه که encoding رو نمیدونم. وقتی که با smplayer اجرا میکنم، زیرنویس از نوع arabic - windows 1256 هست. توی برنامه این رو بین encodingهاش نداره. البته برنامه ISO-8895-6 رو داره که اون هم یک استاندارد برای arabic encoding هست ولی مشکل اینه که بیشتر زیرنویسها توی ویندوز تولید میشه و windows1256 هستن.
وقتی زیرنویسی هارد ساب میشه دیگه کدینگ نداره, چون دیگه جزوی از خود ویدو جزوی از تصویر هست !!!!
برای همینه که پلیر روی هر کدینگی باشه هارد ساب را اجرا میکنه !!!
شما ممکنه یه پلیرت کدینگ نمایش زیرنویسش UTF-8 باشه, یه پلیر دیگت مثلا windows1256 اما هر دو پلیر ساب هارد را نشون میدن چون هارد ساب دیگه جزو تصویر نه زیرنویس !!!
اصلا ویژگیه مهمه هاردساب همینه دیگه ;D ;D
-
handbrake خیلی خوب شده. الان تنها مشکلی که دارم اینه که encoding رو نمیدونم. وقتی که با smplayer اجرا میکنم، زیرنویس از نوع arabic - windows 1256هست. توی برنامه این رو بین encodingهاش نداره. البته برنامه ISO-8895-6 رو
داره که اون هم یک استاندارد برای arabic encoding هست ولی مشکل اینه که بیشتر زیرنویسها توی ویندوز تولید میشه و windows1256 هستن.
وقتی زیرنویسی هارد ساب میشه دیگه کدینگ نداره چون دیگه جزوی از خود ویدو جزوی از تصویر هست !!!!
برای همینه که پلیر روی هر کدینگی باشه هارد ساب را اجرا میکنه !!!
شما ممکنه یه پلیرت کدینگ نمایش زیرنویسش UTF-8 باشه, یه پلیر دیگت مثلا windows1256 اما هر دو پلیر ساب هارد را نشون میدن چون هارد ساب دیگه جزو تصویر نه زیرنویس !!!
اصلا ویژگیه مهمه هاردساب همینه دیگه ;D ;D
این که درست. منظورم این بود که انکدینگ زیرنویس فارسی من رو برنامه handbrake ساپورت نمیکنه.
-
این که درست. منظورم این بود که انکدینگ زیرنویس فارسی من رو برنامه handbrake ساپورت نمیکنه.
عجیبه !!!!
FFmpeg کمک میکنه :)
-
handbrake مشکل رو به خوبی هندل کرد. (دم توسعهدهدندههاش گرم)
فایل زیرنویس فارسی رو توی ویندوز با notepad باز کردم و با UTF-8 encoding ذخیرهاش کردم. بعدش دیگه توی گنو/لینوکسام با handbrake تونستم هارد ساب کنم.
البته هنوز مشکلاتی هم داره. مثلا نمیشه فونت، اندازه، محل قرار گیری، رنگ و ... رو مشخص کرد. این کارها رو توی ویندوز میشه با VSO Video Convertor انجام داد که پشتیبانی خوبی هم از زبان فارسی داره.
امیدوارم این پروژه همینطوری پیش بره.
ممنون دوستان
-
معمولا فرمت ass در هاردساب تا جایی که من دیدم استفاده میشه. این فرمت هم برنامه خاصی برای شخصی سازی داره
-
در صورتی که فایل زیرنویس فارسی با یونیکد UTF-8 و فرمت SRT ذخیره شده باشه، میشه با دستور زیر هم همون کار handbrake رو انجام داد و حتی فونت رو هم تنظیم کرد:
(با استفاده از نسخهی ffmpeg version 2.6.3)
ffmpeg -i input.mp4 -vf subtitles=filename=sub-fa.srt:force_style='FontName=2Roya' -acodec ac3 -vcodec h264 out.mkv
دقت کنید که برای هاردساب شدن باید تصویر دوباره encode بشه. پس نباید برای کلید vcodec- مقدار copy را وارد کرد.
برای تنظیم رنگ و اندازه فونت باید فایل زیرنویس رو دستکاری کرد. به طور مثال فایل زیرنویس من با فرمت srt و یونیکد UTF-8:
1
00:00:00,260 --> 00:00:03,314
<font size=25 color="#D900D9">ترجمه ارایه ای از
مترجم گرامی</font>
اگر یک فایل زیرنویس داشته باشم، به صورت زیر:
محتویات فایل sub-fa.srt:
1
00:00:00,260 --> 00:00:03,314
ترجمه ارایه ای از
مترجم گرامی
2
00:00:03,434 --> 00:00:06,235
خط اول زیرنویس
3
00:00:06,337 --> 00:00:08,604
خط دوم زیرنویس second line of subtitle
توی برنامه subtitle workshop بازش میکنم، کل سطرها را با Ctrl+A انتخاب میکنم و بعد از منوی Edit گزینه set color رو انتخاب میکنم. با انتخاب رنگ زرد، فایل sub-fa.srt به صورت زیر در میآید:
1
00:00:00,260 --> 00:00:03,314
<font color=#FFFF00>ترجمه ارایه ای از
مترجم گرامی</font>
2
00:00:03,434 --> 00:00:06,235
<font color=#FFFF00>خط اول زیرنویس</font>
3
00:00:06,337 --> 00:00:08,604
<font color=#FFFF00>خط دوم زیرنویس second line of subtitle</font>
با یه ویرایشگر متن، فایل sub-fa.srt رو باز میکنم و همهی <font color=#FFFF00> را با <font size=32 color=#FFFF00> جایگزین (replace all) میکنم. سپس فایل رو با انکودینگ UTF-8 ذخیره میکنم.
در آخر محتوای فایل sub-fa.srt میشه:
1
00:00:00,260 --> 00:00:03,314
<font size=32 color=#FFFF00>ترجمه ارایه ای از
مترجم گرامی</font>
2
00:00:03,434 --> 00:00:06,235
<font size=32 color=#FFFF00>خط اول زیرنویس</font>
3
00:00:06,337 --> 00:00:08,604
<font size=32 color=#FFFF00>خط دوم زیرنویس second line of subtitle</font>
یه کم راه طولانی میشه ولی به خوبی میشه با نرمافزارهای آزاد زیرنویس فارسی رو با تنظیم فونت، رنگ و اندازه فونت روی تصویر هاردساب کرد.