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

Derek Herman
Derek Herman
Joe Medley
Joe Medley

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

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

हम सुझाए गए Docker इंस्टॉल और वेब के लिए मीडिया फ़ाइलें तैयार करें की glocken.mov फ़ाइल का इस्तेमाल कर रहे हैं. यह फ़ाइल media डायरेक्ट्री में जोड़ी गई है. हमने इस सेक्शन में मौजूद सभी निर्देशों के लिए, 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 पैकेजर का इस्तेमाल करें जैसा कि मीडिया ऐप्लिकेशन की बुनियादी बातें सेक्शन में पहले ही बताया गया है:

/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 लाइब्रेरी
एसीई MP4 एसीई
ओपस WebM लिबोपस
Vorbis WebM लिबरबिस

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