मीडिया पर काम करने के लिए, अक्सर मीडिया फ़ाइलों की विशेषताओं में बदलाव करना पड़ता है, जैसे कि बिटरेट या रिज़ॉल्यूशन. शुरुआत करने का आसान तरीका ढूंढने पर आपको डरावना होता है. इस पेज पर, आपको इस बारे में जानकारी मिलेगी कि किन टूल का इस्तेमाल किया जाता है. इसके अलावा, तेज़ी से इंस्टॉल करने के लिए किया जा सकता है.
सबसे पहले, हम दो सामान्य कमांड-लाइन मीडिया यूटिलिटी के बुनियादी इस्तेमाल के बारे में बताते हैं: Shaka Packager और FFmpeg और उसके बाद हम टूल को तुरंत इंस्टॉल करने में आपकी मदद करते हैं. दो आवेदनों को कवर क्यों करना चाहिए? वैसे तो दोनों ही अपने-आप में असरदार और उपयोगी हैं, वेब के लिए मीडिया तैयार करने के लिए ज़रूरी सभी चीज़ें नहीं हैं. हमने यह भी बनाया है: मीडिया कन्वर्ज़न और मीडिया एन्क्रिप्ट (सुरक्षित) करने का तरीका पेज जो इन दोनों ऐप्लिकेशन के साथ कई सामान्य कार्रवाइयां दिखाते हैं.
फ़ाइल में बदलाव करने के टास्क के लिए, सिर्फ़ ये ऐप्लिकेशन विकल्प उपलब्ध नहीं हैं. लेकिन ये सबसे सामान्य और असरदार हैं. अन्य विकल्पों में जीयूआई शामिल है ऐप्लिकेशन Miro, HandBrake, और VLC. एन्कोडिंग/ट्रांसकोडिंग भी उपलब्ध है Zencoder, Amazon Elastic Encoder, और Google Transcoder API जैसी सेवाएं.
शाका पैकेजर
शाका पैकेजर, मीडिया पैकेजिंग के लिए मुफ़्त में इस्तेमाल किया जाने वाला SDK टूल है. अगर मीडिया प्लेयर का इस्तेमाल किया जा रहा था, तो 'शाका पैकेजर' का इस्तेमाल करके फ़ाइलें तैयार की जा सकती हैं. यह दो सबसे सामान्य वीडियो स्ट्रीमिंग प्रोटोकॉल के लिए कन्वर्ज़न का इस्तेमाल करता है: डाइनैमिक अडैप्टिव स्ट्रीमिंग ओवर एचटीटीपी (DASH) या एचटीटीपी लाइव स्ट्रीमिंग (HLS). शाका पैकेजर में सुरक्षा से जुड़ी मुख्य सुविधाएं काम करती हैं: एन्क्रिप्ट (सुरक्षित) करने की सामान्य सुविधाएं और वाइडवाइन डिजिटल राइट्स मैनेजमेंट (डीआरएम). यह लाइव-स्ट्रीमिंग और मांग पर वीडियो (वीडियो-ऑन-डिमांड) भी हैंडल कर सकता है.
पैकेज पर इस बात के बावजूद, यह यूटिलिटी C++ से कहीं ज़्यादा है डेवलपर. आप इसका उपयोग मीडिया सॉफ़्टवेयर बनाने के लिए लाइब्रेरी के रूप में और इस रूप में यह एक कमांड-लाइन यूटिलिटी है, जो मीडिया फ़ाइलों को वेब प्लेबैक के लिए तैयार करने में इस्तेमाल की जाती है. यह है जो यहां हमारे लिए उपयोगी हैं. असल में, वेब मीडिया क्रिएटर्स को बिना पैसे खर्च किए कुछ काम करने के लिए, शाका पैकेजर एक ही तरीका है महंगे कमर्शियल ऐप्लिकेशन.
शाका पैकेजर कमांड का बुनियादी पैटर्न यहां दिया गया है:
packager stream_descriptor [stream_descriptor-2 [stream_descriptor-n]] [flags]
packager -help
टाइप करने पर, आपको यह सुविधा नहीं मिलेगी. यह उदाहरण है
के बारे में सोच-विचार किया जा सकता है और इससे पता चलता है कि
Shaka Packager के दस्तावेज़. ध्यान दें कि कई stream_descriptor
हैं
पैटर्न में मौजूद आइटम. हालांकि, हम इसे नहीं दिखाते हैं, लेकिन वीडियो में हेर-फेर की जा सकती है
और एक ही निर्देश से किसी फ़ाइल की ऑडियो स्ट्रीम अलग-अलग करने की सुविधा मिलती है.
इस बेसिक पैटर्न की तुलना, फ़ाइल की विशेषताएं दिखाने वाले आसान तरीके से करें. इस उदाहरण में, हमने मिलते-जुलते हिस्से दिए हैं.
packager stream_descriptor [stream_descriptor-n] [flags]
packager input=glocken.mp4 --dump_stream_info
कमांड से यह जानकारी मिलती है:
File "glocken.mp4":
Found 2 stream(s).
Stream [0] type: Video
codec_string: avc1.640028
time_scale: 30000
duration: 300300 (10.0 seconds)
is_encrypted: false
codec: H264
width: 1920
height: 1080
pixel_aspect_ratio: 1:1
trick_play_factor: 0
nalu_length_size: 4
Stream [1] type: Audio
codec_string: mp4a.40.2
time_scale: 48000
duration: 481280 (10.0 seconds)
is_encrypted: false
codec: AAC
sample_bits: 16
num_channels: 2
sampling_frequency: 48000
language: eng
seek_preroll_ns: 20833
मीडिया फ़ाइल की बुनियादी बातों में बताई गई विशेषताओं को देखें और कुछ चीज़ों पर ध्यान दें. फ़ुल एचडी के लिए, लंबाई और चौड़ाई सही होनी चाहिए, और कंटेनर टाइप के लिए, ऑडियो और वीडियो कोडेक पसंद किए जाने वाले कोडेक हैं. ऑडियो के लिए AAC और वीडियो के लिए H264. यह भी ध्यान दें कि स्ट्रीम की पहचान नंबर. ये ऑडियो और वीडियो में बदलाव करने वाले कामों में मददगार हैं अलग करना होगा.
ध्यान दें कि ऊपर दिए गए आउटपुट में बिटरेट नहीं दिखता. कुछ कमी होने पर भी, यह आउटपुट पढ़ने में आसान है, इसलिए जब भी हो सके इसका इस्तेमाल किया जाता है. जब हमें इसकी ज़रूरत होती है वह जानकारी जो शाका पैकेजर को नहीं मिल सकती, जैसे कि बिटरेट, हम FFmpeg का इस्तेमाल करते हैं.
FFmpeg
FFmpeg रिकॉर्डिंग, रूपांतरण और स्ट्रीमिंग के लिए भी मुफ़्त ऐप्लिकेशन है मीडिया फ़ाइलें. इसकी क्षमताएं शाका पैकेजर से बेहतर या खराब नहीं हैं. वे बस अलग हैं.
FFmpeg कमांड का बेसिक पैटर्न इस तरह दिखता है:
ffmpeg [GeneralOptions] [InputFileOptions] -i input [OutputFileOptions] output
शाका पैकेजर की तरह यह ऐप्लिकेशन एक से ज़्यादा स्ट्रीम को हैंडल कर सकता है. इसके कुछ विकल्पों का इस्तेमाल एक से ज़्यादा जगहों पर किया जाता है और वे फ़ाइल आउटपुट में अलग तरीके से बदलाव करते हैं कमांड में वे कहां मौजूद हैं. इसका ध्यान रखें स्टैक ओवरफ़्लो पर FFmpeg सवाल और इससे मिलती-जुलती साइटों को देखें.
हम फिर से फ़ाइल दिखाने के उदाहरण से बुनियादी पैटर्न की तुलना करेंगे विशेषताएं.
ffmpeg [GeneralOptions] [InputFileOptions] -i input [OutputFileOptions] output
ffmpeg -i glocken.mp4
हमने जो जानकारी मांगी थी उसके अलावा, यह गड़बड़ी का मैसेज भी प्रिंट करता है जैसा कि नीचे उदाहरण में दिखाया गया है. यह तकनीकी रूप से गलत है FFmpeg का इस्तेमाल कर रहे हैं. हम इसका इस्तेमाल इसलिए करते हैं, क्योंकि इसमें वह जानकारी दिखती है जो हमारे लिए अहम है.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'glocken.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf58.17.100
Duration: 00:01:47.53, start: 0.000000, bitrate: 10715 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc), 1920x1080, 10579 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
handler_name : SoundHandler
At least one output file must be specified
Docker के साथ ऐप्लिकेशन इंस्टॉल करना
अगर आपको हमारे निर्देशों का पालन करना है और ज़रूरी टूल की जानकारी मैन्युअल तरीके से भरें या आसान तरीके से डॉकर का इस्तेमाल करें. हमारा सुझाव है कि आप Docker, क्योंकि इससे आपका काफ़ी समय बचेगा. इसके अलावा, हमने में आपको तुरंत सेट अप करने के लिए निर्देश दिए हों.
अपने कंप्यूटर पर कहीं भी
media-tools
नाम की नई डायरेक्ट्री बनाकर शुरू करें; आप जो भी नाम चाहें, उसका उपयोग कर सकते हैं, बस ध्यान रखें कि नीचे दिए गए निर्देश यह मान लिया किmedia-tools
का इस्तेमाल डायरेक्ट्री के नाम के तौर पर किया जा रहा है.media-tools
मेंdocker
औरmedia
डायरेक्ट्री बनाएं. ऐसा करने पर, आपकीmedia
डायरेक्ट्री को बिल्ड कॉन्टेक्स्ट से बाहर रखा जाएगा. यह ज़रूरी है क्योंकिmedia
में फ़ाइलें सेव की जाती हैं और उन पर हमारी योजना होती है तो उनमें से कुछ तो बहुत बड़े हो सकते हैं.Dockerfile
को सीधे अगर आप कभी भीmedia-tools
को फिर से बनाते हैं, तो इससे इमेज धीमी हो जाएगी सड़क—शायद इंस्टॉल किए गए वर्शन को बदलने के लिए./media-tools/docker/Dockerfile
बनाएं और इन बिल्ड निर्देशों को जोड़ें:FROM google/shaka-packager:release-v2.4.3 as packager FROM jrottenberg/ffmpeg:4.3.2-alpine38 COPY --from=packager /usr/bin /usr/bin ENTRYPOINT ["sh"]
इमेज बनाएं:
docker build -t media-tools ./docker
इमेज को इंटरैक्टिव शेल के तौर पर चलाएं. Linux पर:
docker run -w /media -v ${PWD}/media:/media -it --rm media-tools /media #
Windows पर:
docker run -w /media -v %cd%/media:/media -it --rm media-tools /media #
इमेज चलाते समय आप FFmpeg और शाका पैकेजर के वर्शन देख सकते हैं
ffmpeg -version
चलाकर सभी चीज़ें सफल होने की पुष्टि करने के लिए और
packager --version
. आउटपुट कुछ ऐसा दिखना चाहिए:
/media # ffmpeg -version
ffmpeg version 4.3.2 Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 6.4.0 (Alpine 6.4.0)
configuration: --disable-debug --disable-doc --disable-ffplay --enable-shared --enable-avresample --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-gpl --enable-libass --enable-fontconfig --enable-libfreetype --enable-libvidstab --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libxcb --enable-libx265 --enable-libxvid --enable-libx264 --enable-nonfree --enable-openssl --enable-libfdk_aac --enable-postproc --enable-small --enable-version3 --enable-libbluray --enable-libzmq --extra-libs=-ldl --prefix=/opt/ffmpeg --enable-libopenjpeg --enable-libkvazaar --enable-libaom --extra-libs=-lpthread --enable-libsrt --enable-libaribb24 --extra-cflags=-I/opt/ffmpeg/include --extra-ldflags=-L/opt/ffmpeg/lib
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
/media # packager --version
packager version v2.4.3-dd9870075f-release
आपने शाका पैकेजर और FFmpeg फ़ाइल को इस्तेमाल करने के बाद, अपने काम को जारी रखा है हम बुनियादी सिद्धांतों को सीख रहे हैं. इसके बाद, मीडिया स्ट्रीमिंग की बुनियादी बातें जानें.