कंटेनर और कोडेक

Derek Herman
Derek Herman
Joe Medley
Joe Medley

एक से ज़्यादा ब्राउज़र पर काम करने के लिए, आपको FFmpeg का इस्तेमाल करके अपनी .mov फ़ाइल को दो अलग-अलग कंटेनर में बदलना होगा: एक एमपी4 कंटेनर और एक WebM कंटेनर. असल में, आपको एक ही समय पर कोडेक की जानकारी देनी होगी. फ़िलहाल, हम FFmpeg को डिफ़ॉल्ट सेटिंग का इस्तेमाल करने की अनुमति दे रहे हैं.

अगर ये कॉन्सेप्ट आपके लिए नए हैं, तो आगे बढ़ने से पहले, मीडिया फ़ाइल के बारे में बुनियादी जानकारी पढ़ें. इसके अलावा, अगर आपने FFmpeg इंस्टॉल नहीं किया है, तो इसे Docker के साथ सेट अप करने के लिए, मीडिया ऐप्लिकेशन की बुनियादी बातें पढ़ें.

हम सुझाए गए Docker इंस्टॉल का इस्तेमाल कर रहे हैं और media डायरेक्ट्री में जोड़ी गई वेब के लिए मीडिया फ़ाइलें तैयार करें से glocken.mov फ़ाइल का इस्तेमाल कर रहे हैं. हमने इस सेक्शन में मौजूद सभी निर्देशों के लिए, FFmpeg के 4.3.2 वर्शन का इस्तेमाल किया है.

कंटेनर

सबसे पहले, हमें .mov फ़ाइल से दो कंटेनर बनाने होंगे. ये कंटेनर, .mp4 और .webm फ़ाइल एक्सटेंशन वाले होने चाहिए. साथ ही, इनमें ऑडियो और वीडियो स्ट्रीम, दोनों मौजूद होनी चाहिए. अगर आपको कंटेनर और स्ट्रीम के बीच के अंतर के बारे में नहीं पता है, तो मीडिया फ़ाइल की बुनियादी बातें पढ़ें.

  1. MP4

    /media # ffmpeg -i glocken.mov glocken.mp4
    
  2. WebM

    /media # ffmpeg -i glocken.mov glocken.webm
    

WebM फ़ॉर्मैट में वीडियो बनाने में, एमपी4 फ़ॉर्मैट के मुकाबले ज़्यादा समय लगता है. नतीजों को देखते हुए, इसमें कोई हैरानी नहीं है. MP4 फ़ॉर्मैट में, मूल फ़ाइल का साइज़ 83% तक कंप्रेस हो जाता है. वहीं, WebM फ़ॉर्मैट में, मूल फ़ाइल का साइज़ 78% तक कंप्रेस हो जाता है. हालांकि, यह साइज़ इससे भी कम हो सकता है. आपके नतीजे अलग-अलग होंगे. यह बताना ज़रूरी है कि FFmpeg 4.2.2 में डिफ़ॉल्ट वीडियो बिटरेट को 200k पर सेट किया गया है. वहीं, 4.3.2 में डिफ़ॉल्ट बिटरेट सेट नहीं किया गया है. इसलिए, वीडियो अब ओरिजनल वीडियो का सिर्फ़4% हिस्सा नहीं है. यह देखने के लिए, मीडिया फ़ाइलों वाले फ़ोल्डर में ls -a bash कमांड का इस्तेमाल करें.

उदाहरण के लिए:

/media # ls -l
-rw-r--r-- 1 root  root  12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root  root  10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root  root   9503301 Mar 7 18:30 glocken.webm

छोटी फ़ाइल पाने के लिए, यह तरीका अपनाएं:

/media # ffmpeg -i glocken.mov -b:v 200k glocken.webm
...
frame=  300 fps=3.6 q=0.0 Lsize=     483kB time=00:00:10.01 bitrate= 395.0kbits/s speed=0.121x
video:359kB audio:117kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.356068%
/media # ls -l
-rw-r--r-- 1 root  root  12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root  root  10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root  root    494497 Mar 7 18:45 glocken.webm

अपने काम की जांच करना

अपने नतीजों की पुष्टि करने के लिए, FFmpeg और Shaka Packager का इस्तेमाल करें. इनके बारे में मीडिया ऐप्लिकेशन की बुनियादी बातें में पहले ही बताया गया है:

/media # packager input=glocken.mp4 --dump_stream_info
/media # ffmpeg -i glocken.mp4

कोडेक

इसके बाद, कोडेक. जैसा कि मीडिया फ़ाइल की बुनियादी बातें में बताया गया है, कोडेक और कंटेनर (फ़ाइल टाइप) एक ही चीज़ नहीं हैं. एक ही कंटेनर टाइप की दो फ़ाइलों में, अलग-अलग कोडेक का इस्तेमाल करके कंप्रेस किया गया डेटा हो सकता है. उदाहरण के लिए, WebM फ़ॉर्मैट में Vorbis या Opus का इस्तेमाल करके ऑडियो को एन्कोड किया जा सकता है. कोडेक बदलने के लिए, हम FFmpeg का इस्तेमाल करते हैं. उदाहरण के लिए, यह निर्देश vorbis ऑडियो कोडेक और av1 वीडियो कोडेक के साथ .mkv फ़ाइल को आउटपुट करता है.

/media # ffmpeg -i glocken.mov -c:a vorbis -c:v av1 glocken.mkv

इस उदाहरण में, -c:a फ़्लैग और -c:v, ऑडियो और वीडियो कोडेक के बारे में बताने के लिए हैं.

मीडिया कन्वर्ज़न पेज पर, कोडेक बदलने के लिए ज़रूरी निर्देशों की सूची दी गई है. नीचे दी गई टेबल में, FFmpeg में इस्तेमाल की गई लाइब्रेरी के बारे में खास जानकारी दी गई है. इन लाइब्रेरी का इस्तेमाल, WebM और MP4 फ़ाइलों के लिए कोडेक कन्वर्ज़न करने के लिए किया जाता है. ये DASH और HLS के लिए सुझाए गए फ़ॉर्मैट हैं.

वीडियो

कोडेक Extension लाइब्रेरी
av1 WebM, mkv libaom-av1
h264 MP4 libx264
vp9 WebM libvpx-vp9

ऑडियो

कोडेक Extension लाइब्रेरी
aac MP4 aac
opus WebM libopus
vorbis WebM libvorbis

इसके बाद, हम आपको अपनी नई फ़ाइलों की बिटरेट बदलने का तरीका बताएंगे.