मीडिया ऐप्लिकेशन की बुनियादी बातें

Derek Herman
Derek Herman
Joe Medley
Joe Medley

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

सबसे पहले, हम दो सामान्य कमांड-लाइन मीडिया यूटिलिटी के बुनियादी इस्तेमाल के बारे में बताते हैं: 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, क्योंकि इससे आपका काफ़ी समय बचेगा. इसके अलावा, हमने में आपको तुरंत सेट अप करने के लिए निर्देश दिए हों.

  1. अपने कंप्यूटर पर कहीं भी media-tools नाम की नई डायरेक्ट्री बनाकर शुरू करें; आप जो भी नाम चाहें, उसका उपयोग कर सकते हैं, बस ध्यान रखें कि नीचे दिए गए निर्देश यह मान लिया कि media-tools का इस्तेमाल डायरेक्ट्री के नाम के तौर पर किया जा रहा है.

  2. media-tools में docker और media डायरेक्ट्री बनाएं. ऐसा करने पर, आपकी media डायरेक्ट्री को बिल्ड कॉन्टेक्स्ट से बाहर रखा जाएगा. यह ज़रूरी है क्योंकि media में फ़ाइलें सेव की जाती हैं और उन पर हमारी योजना होती है तो उनमें से कुछ तो बहुत बड़े हो सकते हैं. Dockerfile को सीधे अगर आप कभी भी media-tools को फिर से बनाते हैं, तो इससे इमेज धीमी हो जाएगी सड़क—शायद इंस्टॉल किए गए वर्शन को बदलने के लिए.

  3. /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"]
    
  4. इमेज बनाएं:

    docker build -t media-tools ./docker
    
  5. इमेज को इंटरैक्टिव शेल के तौर पर चलाएं. 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 फ़ाइल को इस्तेमाल करने के बाद, अपने काम को जारी रखा है हम बुनियादी सिद्धांतों को सीख रहे हैं. इसके बाद, मीडिया स्ट्रीमिंग की बुनियादी बातें जानें.