वीडियो शेयर करने के सबसे सही तरीके

कई लोग अपने Android डिवाइस का इस्तेमाल करके वीडियो शेयर करते हैं. मिलने वाले कॉन्टेंट की क्वालिटी वीडियो की प्रोसेसिंग की वजह से, अक्सर यह वीडियो मूल वीडियो से छोटा होता है शेयर करने के ऐप्लिकेशन से मिलता है. इस दस्तावेज़ में बताया गया है कि शेयर किए गए वीडियो और वीडियो प्रोसेस करने में होने वाली कुछ सामान्य गलतियों से बचने के लिए. ऑप्टिमाइज़ करने के लिए एचडीआर वीडियो कॉन्टेंट शेयर करने के लिए, देखें इस पेज पर, एचडीआर को एसडीआर में बदलने के लिए, ट्रांसफ़ॉर्मर मॉड्यूल का इस्तेमाल करें.

मुख्य तौर पर, आपको वीडियो का रिज़ॉल्यूशन लगातार बनाए रखना है और उसकी क्वालिटी बनाए रखनी है वीडियो शेयर करने की तैयारी करते हुए, ज़्यादा से ज़्यादा समय तक ज़्यादा से ज़्यादा बढ़ाने की कोशिश करते हैं.

शेयर करने की प्रोसेस

पहली इमेज में दिखाया गया है कि वीडियो शेयर करने का सामान्य फ़्लो क्या होता है:

वीडियो पाइपलाइन शेयर की जा रही है अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है पहली इमेज. वीडियो शेयर करने की पाइपलाइन.

पाइपलाइन में ये चरण शामिल हैं:

  1. वीडियो कैप्चर करने और उसे एन्कोड करने के लिए, कैप्चर करने के दौरान इफ़ेक्ट जोड़े जा सकते हैं. इसके अलावा, उपयोगकर्ता इस चरण को छोड़कर, स्टोरेज से कोई वीडियो चुन सकता है जिसे किसी दूसरे ऐप्लिकेशन से रिकॉर्ड किया गया था.
  2. वीडियो में बदलाव करें, उसे फ़िल्टर करें, बेहतर बनाएं या किसी और तरीके से उसे प्रोसेस करें.
  3. ट्रांसकोडिंग के लिए, वीडियो को स्केल करें या उसका साइज़ बदलें.
  4. शेयर करने के लिए वीडियो को ट्रांसकोड करें. दूसरे चरण में फ़िल्टर करने की सुविधा को अक्सर इस तरह लागू किया जाता है इस चरण का हिस्सा हैं.

अभी दो चरण पूरे किए जा रहे हैं आपके वीडियो की क्वालिटी तय करने वाले पैरामीटर: शुरुआती वीडियो में एन्कोडिंग रिकॉर्डिंग, और ट्रांसकोडिंग शामिल हैं. इसके अलावा, आपको ये काम भी करने पड़ सकते हैं ट्रांसकोडिंग के आखिरी चरण से पहले वीडियो के साइज़ में बदलाव करें, इससे क्वालिटी पर भी असर पड़ सकता है.

सुझाव

पहली टेबल में वीडियो की क्वालिटी के लिए पांच मुख्य पैरामीटर दिखाए गए हैं और से पता चलता है कि कौनसे चरण उनका इस्तेमाल कर सकते हैं.

पैरामीटर कैप्चर करें शेयर करें
प्रोफ़ाइल Y Y
रिज़ॉल्यूशन Y Y
बिटरेट Y Y
क्वांटाइज़ेशन पैरामीटर (QP) (बहुत कम) Y
बी फ़्रेम नहीं Y

टेबल 1. वीडियो की क्वालिटी तय करने वाले मुख्य पैरामीटर

प्रोफ़ाइल

बेहतर परिणामों के लिए, कोडेक. एवीसी एन्कोडिंग के लिए, हाई प्रोफ़ाइल और लेवल 4 को चुनें.

रिज़ॉल्यूशन, क्रॉपिंग, और स्केलिंग

स्केलिंग चरण में, कैप्चर किए गए वीडियो के शुरुआती रिज़ॉल्यूशन को बदला जा सकता है शेयर करने के लिए ट्रांसकोड करने से पहले, लेकिन स्केलिंग से वीडियो की क्वालिटी में गिरावट आ सकती है. वीडियो. हमारा सुझाव है कि आप स्केलिंग से बचें और शुरुआती वैल्यू के लिए रिज़ॉल्यूशन चुनें जिसे पूरी पाइपलाइन में इस्तेमाल किया जा सकता है. यह भी याद रखें कि बहुत ज़्यादा क्रॉप करने से इमेज की क्वालिटी खराब हो जाएगी. खास तौर पर तब, जब काटे गए हिस्से को बड़ा किया गया हो इमेज. इन दिशा-निर्देशों का पालन करें:

  • ऐसा रिज़ॉल्यूशन चुनें जो शेयर करने के आखिरी रिज़ॉल्यूशन के बराबर हो.
  • कैप्चर रिज़ॉल्यूशन, शेयर करने के रिज़ॉल्यूशन से ज़्यादा नहीं होना चाहिए जब तक कि सभी इंटरमीडिएट चरण, बड़े साइज़ का रिज़ॉल्यूशन (जैसे कि शुरुआती वीडियो रिकॉर्ड करने के दौरान बिटरेट का ज़्यादा होना).

    • अगर शेयर करने की एन्कोडिंग से 720x1280 का रिज़ॉल्यूशन बनता है, तो हमारा सुझाव है कि 720x1280 कैप्चर का रिज़ॉल्यूशन.
    • अगर कैप्चर करने और शेयर करने के बीच के चरणों में काटना शामिल है, तो इस्तेमाल करें इससे रिज़ॉल्यूशन ज़्यादा होता है, जैसे कि 1080x1920. साथ ही, वीडियो को कैप्चर करने के लिए, ज़्यादा पिक्सल को हैंडल करने के लिए बिटरेट कैप्चर करें.
  • बहुत ज़्यादा काटे जाने की वजह से, इमेज की क्वालिटी खराब हो जाती है. खास तौर पर तब, जब इमेज को क्रॉप किया गया हो इमेज को बड़ा कर दिया जाता है.

  • वीडियो को कम रिज़ॉल्यूशन से ज़्यादा रिज़ॉल्यूशन पर न बड़ा करें. बेहतर बनाने की कोशिशें का इस्तेमाल करें. अपनी पसंद का ज़्यादा रिज़ॉल्यूशन इस्तेमाल करें शुरू किया है.

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

रिज़ॉल्यूशन और बिटरेट एक-दूसरे से जुड़े हुए हैं. उदाहरण के लिए, उच्च-रिज़ॉल्यूशन वाला फ़ोन शेयर करने वाले पाइपलाइन के ज़रिए वीडियो, जो आखिर में कम बिटरेट में ट्रांसकोड करता है कम रिज़ॉल्यूशन से इमेज बनाने की तुलना में, कम क्वालिटी की इमेज जनरेट करता है. जिस तरह बिटरेट कम हो जाता है. क्रॉसओवर पॉइंट ऐसे होते हैं जहां छोटे रिज़ॉल्यूशन शुरू होते हैं ताकि आपको बेहतर नतीजे मिल सकें:

बिटरेट रिज़ॉल्यूशन
5+ एमबीपीएस 1080x1920
1.5 - 5+ एमबीपीएस 720x1280
1.5 एमबीपीएस या इससे कम एसडी के बराबर. 9:16 के आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) में एक जैसे पिक्सल की संख्या करीब 416x736 होती है

दूसरी टेबल. बिटरेट बनाम रिज़ॉल्यूशन

कई लोकप्रिय ऐप्लिकेशन 720p या इससे कम रिज़ॉल्यूशन में वीडियो शेयर करते हैं. डेटा से पता चलता है कि कि 720p रिज़ॉल्यूशन 1.5 के बीच के बिटरेट टारगेट के लिए सही है और 5 एमबीपीएस होना चाहिए.

बिटरेट

रिकॉर्डिंग

ज़्यादा एन्कोडिंग बिटरेट का इस्तेमाल करने से, वीडियो के मामले में सबसे ज़्यादा सुधार होता है क्वालिटी. हमारा सुझाव है कि आप खास कैमरा ऐप्लिकेशन के मुताबिक बिटरेट चुनें. 720x1280 रिज़ॉल्यूशन के लिए, हम 10 एमबीपीएस का कैप्चर बिटरेट इस्तेमाल करने का सुझाव देते हैं.

कैप्चर की एन्कोडिंग, डिवाइस पर की जाती है. इसलिए, ज़्यादा बिटरेट इस्तेमाल करने के लिए शेयर करने के चरण में हुए ज़्यादातर बदलावों की भरपाई कुछ नेगेटिव वैल्यू के साथ करें असर पड़ता है. बनने वाली बड़ी फ़ाइलों का इस्तेमाल सिर्फ़ डिवाइस पर हेर-फेर करने के लिए किया जाता है.

ट्रांसकोडिंग के आखिरी चरण में बिटरेट को कम किया जा सकता है, जैसा कि दूसरी टेबल में दिखाया गया है.

शेयर करें

शेयर करने के दौरान बिटरेट का सबसे ज़्यादा असर होता है, क्योंकि यह सीधे तौर पर अपलोड किए जाने वाले वीडियो का साइज़. वीडियो के बीच एक अंतर है साथ ही, क्लाउड स्टोरेज और फ़ाइलों को भेजने में लगने वाले समय को भी ध्यान में रखा जाता है.

प्रोफ़ाइल, बी-फ़्रेम, और क्यूपी बाउंडिंग वैल्यू को कोड में बदलने के विकल्प भी ज़्यादा हैं ज़्यादा ज़रूरी है.

हमारा सुझाव है कि आप इसे 4 से 5 एमबीपीएस (720x1280 रिज़ॉल्यूशन के लिए) के बीच रखें, ताकि यह अच्छा रहे विज़ुअल क्वालिटी.

क्वांटाइज़ेशन पैरामीटर (QP)

Android 12 और उसके बाद वाले वर्शन के लिए, QP पासकोड स्टैंडर्ड के मुताबिक होते हैं. MediaFormat API और NDK मीडिया लाइब्रेरी. Android के पुराने वर्शन में, क्यूपी में बदलाव करने की सुविधा सिर्फ़ फ़्रेमवर्क की मदद से उपलब्ध है फ़ंक्शन, MediaFormat कॉन्फ़िगरेशन में वेंडर के हिसाब से कुंजियों का इस्तेमाल करता है.

रिकॉर्डिंग

वीडियो कैप्चर करते समय, QP सेटिंग के बजाय बिटरेट कंट्रोल का इस्तेमाल करें. हमेशा उपलब्ध नहीं होता.

हम 10 एमबीपीएस के कैप्चर बिटरेट के लिए, क्यूपी सेटिंग को अडजस्ट करने का सुझाव नहीं देते (720x1280 के लिए). अगर कैप्चर बिटरेट काफ़ी कम है, तो 720x1280, 40 की क्यूपी सेटिंग, बेहतर क्वालिटी के बीच अच्छा तालमेल है इससे कोडेक को बार-बार, टारगेट बिटरेट को ज़रूरत से ज़्यादा गर्म करने के लिए मजबूर नहीं किया जा सकता.

शेयर करें

हमारा सुझाव है कि क्यूपी की सीमा 40 होनी चाहिए. खास तौर पर तब, जब बिटरेट 4 एमबीपीएस से कम हो. यह पक्का करता है कि कोड में बदले गए वीडियो की क्वालिटी सबसे कम है, लेकिन इससे वीडियो का बिटरेट अच्छा है. बिटरेट में बढ़ोतरी इन चीज़ों पर निर्भर करती है: मुश्किल है. हालांकि, शेयर किया जाने वाला कोई ऐप्लिकेशन, आपके विज्ञापनों के मामले में जनरेट किए गए वीडियो का बिटरेट भी है, लेकिन यह तय सीमा तक.

वीडियो को किसी कम पाबंदी (ज़्यादा) ज़्यादा से ज़्यादा क्यूपी की सीमा. इससे कोडेक को वीडियो बनाने की इससे वीडियो की क्वालिटी खराब हो जाती है और वीडियो के बाकी हिस्सों को सुरक्षित रखने में मदद मिलती है. आप शेयर करने के लिए वीडियो, क्योंकि यह एक ट्रांसकोडिंग कार्रवाई है; आप पहले ही वह वीडियो कैप्चर किया गया हो जिसे आप शेयर करना चाहते हैं.

इसकी कमी यह है कि इन अलग-अलग चरणों के साथ ट्रांसकोडिंग के चरण को दोहराया जाता है पैरामीटर की मदद से, वीडियो शेयर होने में ज़्यादा समय लगता है. कम करने का एक तरीका यह इंतज़ार का समय, कुछ हद तक ट्रांसकोड किए गए वीडियो पर ध्यान देने से होता है. इससे यह तय होता है कि वीडियो सही से काम नहीं कर रहा तय सीमा से ज़्यादा बिटरेट इस्तेमाल करने की आपकी क्षमता के हिसाब से सही है. अगर ऐसा नहीं है, तो ट्रांसकोडिंग करें और ज़्यादा सही QP पैरामीटर का इस्तेमाल करके फिर से कोशिश करें.

बी-फ़्रेम और एन्कोडिंग प्रोफ़ाइल

बी-फ़्रेम का इस्तेमाल सिर्फ़ शेयर करने के दौरान करें. ऐसा सिर्फ़ तब करें, जब Android 10 या इसके बाद का वर्शन होना चाहिए.

ऐप्लिकेशन को इनका इस्तेमाल करके, कोड में बदलने के लिए इस्तेमाल की जा सकने वाली प्रोफ़ाइलों की जांच करनी चाहिए CodecCapabilities क्योंकि सभी डिवाइसों पर मुख्य या हाई प्रोफ़ाइल काम नहीं करतीं. सबसे ऊंची प्रोफ़ाइल का इस्तेमाल करें AVC एन्कोडर द्वारा समर्थित: उच्च > मुख्य > बेसलाइन. सबसे सुरक्षित नतीजों के लिए, इनका इस्तेमाल न करें बी-फ़्रेम कॉन्फ़िगर करें (KEY_LATENCY या KEY_MAX_B_FRAMES) बेसलाइन का इस्तेमाल करते समय क्योंकि कुछ एन्कोडर कॉन्फ़िगरेशन में गड़बड़ी कर सकते हैं.

नीचे दिए गए कोड सेगमेंट एक 'MediaFormat format' के तौर पर इस्तेमाल किए जाएंगे. इनका इस्तेमाल इन कामों के लिए किया जाएगा एवीसी एन्कोडर को कॉन्फ़िगर करें

Android 10

एपीआई 29 या उसके बाद का वर्शन

सबसे ज़्यादा काम करने वाली प्रोफ़ाइल का इस्तेमाल करें और B-frame पैरामीटर को 1 पर सेट करें:

format.setInt32(KEY_PROFILE, AVCProfileHigh);
format.setInt32(KEY_MAX_B_FRAMES, 1);

इस स्थिति में KEY_LATENCY सेट न करें.

Android 8, 8.1, और 9

एपीआई 26, 27, 28

सबसे अच्छी क्वालिटी वाली प्रोफ़ाइल का इस्तेमाल करें, लेकिन बी-फ़्रेम जनरेट होने की सुविधा को बंद करें. यह बातचीत के दौरान, MediaMuxer सिस्टम के इन वर्शन में

format.setInt32(KEY_PROFILE, AVCProfileHigh);
format.setInt32(KEY_LATENCY, 1);

KEY_LATENCY वैल्यू, कोडेक को बी-फ़्रेम जनरेट करने से रोकती है. हालांकि, ऐसा करने के बावजूद अन्य कोडेक का इस्तेमाल कर सकता है.

अगर आपका ऐप्लिकेशन फ़ाइनल आउटपुट फ़ाइल बनाने के लिए MediaMuxer का इस्तेमाल नहीं करता, तो आपको KEY_LATENCY वैल्यू को 1 के बजाय 2 पर सेट करके, B-फ़्रेम को चालू करें. इसमें ऐसा होना चाहिए कोडेक को B-फ़्रेम बनाने की अनुमति दें.

Android 7.1 और इससे पहले के वर्शन

एपीआई 25 और उससे पहले के वर्शन

सुरक्षित नतीजे पाने के लिए, बेसलाइन प्रोफ़ाइल का इस्तेमाल करें.

format.setInt32(KEY_PROFILE, AVCProfileBaseline);

Android 7 से पहले के वर्शन में, Android एओएसपी सिर्फ़ बेसलाइन प्रोफ़ाइल पर काम करता है. हालांकि, यह OEM ने कुछ डिवाइसों पर मुख्य/हाई प्रोफ़ाइल को चालू किया हो विक्रेता-विशिष्ट प्रोफ़ाइल का उपयोग करके.

अगर आपका ऐप्लिकेशन MediaMuxer का इस्तेमाल नहीं करता है, तो मुख्य या हाई प्रोफ़ाइल का इस्तेमाल तब किया जा सकता है, जब कोडेक इसका समर्थन करता है. B- की संख्या को नियंत्रित करने के लिए कोई सार्वजनिक प्रारूप कुंजी नहीं है फ़्रेम.

एचडीआर को एसडीआर में बदलने के लिए, ट्रांसफ़ॉर्मर मॉड्यूल का इस्तेमाल करें

हमारा सुझाव है कि Android 13 (एपीआई लेवल 33) और उसके बाद के वर्शन में, Jetpack Media3 इस्तेमाल करें ट्रांसफ़ॉर्मर मॉड्यूल का इस्तेमाल करके ऐसे ऐप्लिकेशन, सेवाओं, और डिवाइस के साथ एचडीआर कॉन्टेंट शेयर किया जा सकता है जो एचडीआर की सुविधा है. ट्रांसफ़ॉर्मर मॉड्यूल एक टोन-मैपिंग करके काम करता है एचडीआर वीडियो स्ट्रीम को एसडीआर में डालें और नतीजे को MP4 के तौर पर सेव करें. इससे वीडियो को ब्यौरा या इमेज की चमक को नुकसान पहुंचाए बिना, वीडियो चलाना.

ध्यान दें: Android 12 (एपीआई लेवल 32) के बीच के सिस्टम वर्शन को टारगेट करने वाले डिवाइसों पर Android 7.0 (एपीआई लेवल 24) तक, ट्रांसफ़ॉर्मर मॉड्यूल अलग तरह से काम करता है. अगर आपने डिवाइस पर एचडीआर क्वालिटी के वीडियो देखे जा सकते हैं. इससे आपका ऐप्लिकेशन, टोन-मैपिंग के बिना कॉन्टेंट को फिर से चलाता है. अगर आपके डिवाइस पर एचडीआर क्वालिटी में वीडियो देखने की सुविधा उपलब्ध नहीं है, तो आपको गड़बड़ी का मैसेज दिखेगा. इससे यह पता चलेगा कि एचडीआर टेक्नोलॉजी उपलब्ध है टोन-मैपिंग काम नहीं करता.

यह कोड एक Transformer सेट अप करता है, जो इनपुट को SDR पर टोन करता है और इसे इनपुट फ़ॉर्मैट (जैसे कि H.264/AVC) में फिर से कोड में बदल देता है:

Kotlin

val transformer = Transformer.Builder(context)
    .setTransformationRequest(
        TransformationRequest.Builder()
            .setHdrMode(TransformationRequest.HDR_MODE_TONE_MAP_HDR_TO_SDR)
            .build())
    .addListener(/* ... */)
    .build()

Java

Transformer transformer = new Transformer.Builder(context)
    .setTransformationRequest(
        new TransformationRequest.Builder()
            .setHdrMode(TransformationRequest.HDR_MODE_TONE_MAP_HDR_TO_SDR)
            .build())
    .addListener(/* ... */)
    .build();

टोन मैपिंग फ़ंक्शन आज़माने के लिए, ट्रांसफ़ॉर्मर डेमो ऐप्लिकेशन.

टोन मैपिंग को सेट अप करने के लिए, इनका इस्तेमाल भी किया जा सकता है MediaCodec, लागू करने के बावजूद ज़्यादा जटिल होता है. ज़्यादा जानकारी के लिए, देखें MediaCodec रेफ़रंस के लिए दस्तावेज़.