FFmpegفناوریکامپیوترمقالات

چگونه با استفاده از FFmpeg یک فایل صوتی جدید رو به ویدئو اضافه کنم؟

0

در شرکتی که من در اون مشغول کدنویسی ام ، مدتیه که استارت یه پروژه VOD رو زدیم. اگه نمیدونید VOD چی هست، این مقاله رو بهتون توصیه میکنم. چگونه یک وب سایت شبیه NetFlix داشته باشیم؟

خب ما برای اینکه بتونیم قابلیت های مختلف Streaming رو به ویدئوهامون اضافه کنیم دنبال راه حل بودیم. منظورم اینه که چطوری میتونیم ویدئو رو به کیفیت های مختلف تقسیم کنیم. مثلا وقتی شما وارد یوتیوب میشید و یک فیلم آموزشی رو می بینید این ویدئو، کیفیت های مختلفی داره، که شما میتونید اون ها رو انتخاب کنید یا اینکه بر اساس سرعت نت شما خودشون انتخاب میشن. چالش هایی از این دست زیاد توی یک پروژه VOD بوجود میاد که ما تونستیم با استفاده از همین ffmpeg عزیز، اون ها رو حل کنیم. اگه هنوز نمیدونید ffpmeg چی هست، خوندن مقاله‌ی چگونه میتوانیم دنیای صوت و تصویر را بهم بریزیم؟ رو بهتون پیشنهاد میکنم.

چالش ها برای سرگرم کننده کردن زندگی هستند و غلبه بر آن باعث معنا دار شدن زندگی.

امیر کفتری

با توجه به پروژه ای که شروع کرده بودیم، من نیاز داشتم تا یه فایل صوتی رو به ویدئو اضافه کنم. مثلا فکر کنید قصد داشتم یک ویدئوی چند زبانه رو بسازم. یعنی وقتی ویدئو داخل Player شروع به پخش شد، کاربر بتونه با کلیک رو یک گزینه خاص، زبان ویدئو رو تغییر بده. شروع کردم به googling تا ببینم چه ابزارهایی برای اینکار وجود دارن و همین باب آشنایی من با ffmpeg عزیز شد.

در حالت کلی و ساده اگه بخاید یک صوت جدید یا به صورت درست تر، کانال صوتی جدید رو به یک ویدئو اضافه کنید، باید از دستور زیر در ffmpeg استفاده کنید :

ffmpeg -i test6.mp4 -i a2.m4a -map 0:v -map 0:a:0 -map 1:a -metadata:s:a:0 language=eng -metadata:s:a:1 language=persian -codec copy -shortest output.mp4

در کد بالا مشخص هست که من زبان فارسی رو به ویدئوی مورد نظرم اضافه کردم. حالا اگه شما ffmpeg رو، روی سیستمتون نصب داشته باشید، با دستور زیر میتونید ببینید که یه کانال صوتی جدید به ویدئویی که خروجی گرفتید اضافه شده :

ffprobe output.mp4

به همین راحتی به همین خوشمزگی.

بیاید یه خورده بیشتر کنجکاوی کنیم و ببینیم کدی که بالا زدیم اصلا چیکار کرد برای ما :

-i : همونطور که میشه حدس زد همون input خودمونه و ورودی های من رو مشخص میکنه، مثلا test.mp4 که فایل ورودی من هست یا a2.m4a که فایل صوتی جدید من رو شامل میشه.

-map: این مشخصه همونطور که از اسمش معلومه، بخش های مختلف یه فایل media رو بهم اتصال میده. مثلا توی کد بالا میگه که من یک ویدئو دارم -map 0:v که این ویدئوی من یک کانال صوتی داره -map 0:a:0 حالا من یه کانال صوتی جدید رو دارم اضافه میکنم -map 1:a. خیلی راحت بود نه؟

-metadata : یه سری اطلاعات رو اضافه میکنه، مثلا من گفتم اولین کانال صوتی من رو برچسب english بده بهش و دومی رو برچسب persian.

-codec copy : این مشخصه به جای اینکه کانال صوتی جدید من رو encode کنه، codec اون رو داخل فایل ویدئویی من کپی میکنه.

-shortest : مشخص میکنه که هر وقت فایل ورودی تموم شه ، فایل خروجی رو هم تموم کن.

به همین راحتی من تونستم یه صوت جدید رو به ویدئوی مورد نظرم اضافه کنم.

البته این بخش کوچیکی از حل مسئله ساختن ویدئوی چند زبانه و پخش اون در Player های وب بود. انشالله اگه اجل مهلت داد،یک آموزش کامل از ساختن ویدئوهای چند زبانه و استفاده کردن از اون ها در وب رو براتون آماده میکنم.

و در آخر هم خدا برای همتون معتبر کنه.

چگونه در PHP مقادیر تکراری را از یک آرایه پاک کنیم؟

مقاله قبلی

چگونه Nginx ،Laravel و MySQL را با استفاده از Docker Compose در Ubuntu راه اندازی کنم؟

مقاله بعدی

شما همچنین ممکن است دوست داشته باشید

نظرات

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *