एक से ज़्यादा ब्राउज़र पर काम करने के लिए, आपको अपनी .mov
फ़ाइल को
दो अलग-अलग कंटेनर में बदलने के लिए FFmpeg का इस्तेमाल करना होगा: MP4 कंटेनर और WebM कंटेनर. असल में, आप एक ही समय पर कोडेक तय करेंगे. फ़िलहाल, हम FFmpeg को अपनी डिफ़ॉल्ट सेटिंग इस्तेमाल करने की अनुमति दे रहे हैं.
अगर ये कॉन्सेप्ट आपके लिए नए हैं, तो आगे बढ़ने से पहले मीडिया फ़ाइल की बुनियादी बातें पढ़ें. इसके अलावा, अगर आपने FFmpeg इंस्टॉल नहीं किया है, तो उसे Docker के साथ सेट अप करने के लिए मीडिया ऐप्लिकेशन की बुनियादी बातें पढ़ें.
हम सुझाए गए Docker इंस्टॉल और
वेब के लिए मीडिया फ़ाइलें तैयार करें से मिली glocken.mov फ़ाइल का इस्तेमाल कर रहे हैं.
यह फ़ाइल media
डायरेक्ट्री में जोड़ी गई है. हमने इस सेक्शन में सभी कमांड के लिए, FFmpeg वर्शन 4.3.2
का इस्तेमाल किया है.
कंटेनर
सबसे पहले, हमें .mov
फ़ाइल से .mp4
और .webm
फ़ाइल एक्सटेंशन वाले दो कंटेनर बनाने होंगे. इस कंटेनर में ऑडियो और वीडियो स्ट्रीम, दोनों शामिल होनी चाहिए.
अगर आपको कंटेनर और स्ट्रीम के बीच के अंतर के बारे में नहीं पता है, तो मीडिया फ़ाइल की बुनियादी बातें देखें. इनसे आपको कंटेनर और स्ट्रीम के बारे में ज़्यादा जानकारी मिलेगी.
MP4
/media # ffmpeg -i glocken.mov glocken.mp4
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 | लिवोर्बिस |
इसके बाद, हम आपको नई बनाई गई फ़ाइलों की बिटरेट बदलने का तरीका बताएंगे.