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

डेरिक हरमन
डेरिक हरमन
जो मेडली
जो मेडली

एक से ज़्यादा ब्राउज़र पर काम करने के लिए, आपको अपनी .mov फ़ाइल को दो अलग-अलग कंटेनर में बदलने के लिए FFmpeg का इस्तेमाल करना होगा: MP4 कंटेनर और 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
    

MP4 की तुलना में, WebM को बनाने में ज़्यादा समय लगता है. नतीजों को देखकर हैरानी की बात नहीं है. 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 के लिए ये फ़ॉर्मैट सुझाए गए हैं.

वीडियो

कोडेक एक्सटेंशन लाइब्रेरी
av1 वेबएम, एमकेवी लिबाओम-Av1
h264 MP4 libx264
vp9 WebM libvpx-vp9

ऑडियो

कोडेक एक्सटेंशन लाइब्रेरी
aac MP4 aac
ओपस WebM लिबोपस
वॉर्बिस WebM लिवोर्बिस

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