أفضل الممارسات لمشاركة الفيديو

يشارك الكثير من الأشخاص الفيديوهات باستخدام أجهزة Android. جودة البيانات المستلمة غالبًا ما يكون الفيديو أدنى من المحتوى الأصلي بسبب معالجته التي يتم إجراؤها من خلال تطبيق المشاركة. وتصف هذه الوثيقة كيفية تحسين جودة مشاركة مقاطع الفيديو وبعض الصعوبات الشائعة في معالجة الفيديو التي يجب تجنبها. للتحسين لمشاركة محتوى الفيديو بنطاق عالي الديناميكية، راجع استخدِم وحدة "المحوِّل" لتحويل ترميز HDR إلى SDR في هذه الصفحة.

أهم ما يجب فعله هو الحفاظ على دقة ثابتة والحفاظ على جودة الفيديو. لأطول فترة ممكنة أثناء التحضير لمشاركة الفيديو.

مسار المشاركة

يوضح الشكل 1 التدفق المعتاد لمشاركة مقطع فيديو:

مسار مشاركة الفيديو الشكل 1. مسار مشاركة الفيديو

تشمل عملية المعالجة الخطوات التالية:

  1. التقِط فيديو وشفِّره، مع إمكانية إضافة تأثيرات أثناء الالتقاط. بدلاً من ذلك، يمكن للمستخدم تخطي هذه الخطوة واختيار فيديو من مساحة التخزين. التي تم تسجيلها مسبقًا من تطبيق آخر.
  2. تعديل الفيديو أو فلترته أو تحسينه أو معالجته بأي طريقة أخرى
  3. غيّر حجم الفيديو أو غيّر حجمه استعدادًا لتحويل الترميز.
  4. تحويل ترميز الفيديو لمشاركته غالبًا ما يتم تطبيق التصفية في الخطوة 2 جزءًا من هذه الخطوة.

هناك خطوتان في العملية يمكن أن تضع في اعتبارك المعلمات التي تحدد جودة الفيديو: الترميز أثناء الأول وتسجيله وتحويله قبل المشاركة. بالإضافة إلى ذلك، قد تحتاج إلى إعادة ضبط حجم الفيديو قبل الخطوة النهائية لتحويل الترميز، ما قد يؤثر في الجودة أيضًا.

الاقتراحات

يعرض الجدول 1 المعلمات الخمس الرئيسية لجودة الفيديو وتشير إلى الخطوات التي يمكن استخدامها.

المَعلمة تصوير القصة مشاركة
الملف الشخصي Y Y
درجة الدقة Y Y
معدل نقل البيانات Y Y
معامل الكم (QP) (نادرًا) Y
إطارات B N Y

الجدول 1. المَعلمات الرئيسية التي تحدّد جودة الفيديو

الملف الشخصي

للحصول على نتائج أفضل، استخدِم الملفات الشخصية الأكثر تقدّمًا التي يوفّرها برنامج الترميز. لترميز AVC، حدد الملف الشخصي العالي والمستوى 4.

درجة الدقة والاقتصاص والتحجيم

يمكنك تغيير درجة الدقة الأولية للفيديو الذي تم التقاطه في خطوة تغيير الحجم. قبل تحويل الترميز للمشاركة، لكن الضبط قد يؤدي إلى تدهور جودة الفيديو القادم. ننصحك بتجنب تغيير حجم الخط واختيار درجة دقة الشاشة الأولية الذي يمكنك استخدامه خلال العملية. تذكر أيضًا أن الدرجة القصوى ينتج عن الاقتصاص صورة بجودة منخفضة، لا سيما في حال تحسين جودة الصورة التي تم اقتصاصها . يُرجى اتّباع الإرشادات التالية:

  • اختَر درجة دقة لا تقل عن درجة دقة المشاركة النهائية.
  • يجب ألا تتجاوز دقة الالتقاط دقة المشاركة بدرجة كبيرة ما لم تكن جميع الخطوات المتوسطة مصممة لدعم درجة الدقة (مثل ارتفاع معدل نقل البيانات أثناء التسجيل الأوّلي).

    • إذا كان ترميز المشاركة ينتج عنه دقة 720×1280، نوصي دقة الالتقاط 720×1280.
    • إذا كانت الخطوات المتوسطة بين الالتقاط والمشاركة تتضمن الاقتصاص، استخدم دقة التقاط أعلى مثل 1080x1920، كما تزيد من التقاط معدل نقل البيانات للتعامل مع وحدات البكسل الإضافية.
  • ينتج عن الاقتصاص الزائد صورة بجودة منخفضة، لا سيّما إذا تم اقتصاصها. يتم تكبير الصورة.

  • تجنَّب تغيير درجة الدقة من درجة دقة أقل إلى دقة أعلى. محاولات الارتقاء لإنشاء تفاصيل غير موجودة. الانتقال إلى درجة الدقة الأعلى المطلوبة من البداية.

  • إذا كان يجب تحسين مستواك، يجب ضبط معلَمات الترميز. على سبيل المثال، إذا كانت قيمة إلا أن درجة الدقة العالية تحتوي على ضعف عدد وحدات البكسل، أي ضعف معدل نقل البيانات.

ثمة ارتباط بين درجة الدقة ومعدل نقل البيانات. على سبيل المثال، قد يكون حمل صورة بدقة عالية فيديو من خلال مسار مشاركة يحوّل الرموز في النهاية إلى معدل نقل بيانات منخفض للحصول على صورة ذات جودة أقل من البدء بدقة أقل. نظرًا لأن العمود حيث ينخفض معدل نقل البيانات، وهناك نقاط تقاطع تبدأ عندها درجات دقة أصغر لتحقيق نتائج أفضل:

معدل نقل البيانات درجة الدقة
أكثر من 5 ميغابت في الثانية 1080×1920
1.5 - 5 ميغابت في الثانية أو أكثر 720×1280
1.5 ميغابت في الثانية أو أقل مكافئة للدقة SD نفس عدد البكسل في نسبة العرض إلى الارتفاع 9:16 هو حوالي 416×736

الجدول 2. معدل نقل البيانات مقابل الدقة

تشارك العديد من التطبيقات الشائعة الفيديو بدقة 720p أو أقل. تشير البيانات إلى أن درجة الدقة 720p هي الخيار المناسب لاستهدافات معدل نقل البيانات التي تتراوح بين 1.5 و5 ميغابت في الثانية.

معدل نقل البيانات

يتم التسجيل

إنّ استخدام معدل نقل بيانات بترميز أعلى يوفّر أكبر قدر من التحسين في الفيديو. الشطيرة. ننصحك باختيار معدّلات نقل البيانات التي تتطابق مع تطبيقات الكاميرا الأصلية. بالنسبة إلى بدرجة دقة 720×1280، ننصح باستخدام معدل نقل بيانات يبلغ 10 ميغابت في الثانية.

بما أنّ ترميز الالتقاط يتم على الجهاز فقط، يمكنك استخدام معدل نقل بيانات أعلى للتعويض عن معظم تحويلات خطوة المشاركة بقليل من السلبيات التأثير. ولا يتم استخدام الملفات الناتجة الأكبر حجمًا إلا لإجراء معالجة على الجهاز فقط.

ويمكنك تقليل معدل نقل البيانات في الخطوة النهائية من تحويل الترميز، كما هو موضّح في الجدول 2.

المشاركة

يكون لمعدل نقل البيانات أكبر تأثير في وقت المشاركة، لأنه يرتبط مباشرةً حجم الفيديو الذي سيتم تحميله. هناك فارق بين الفيديوهات المختلفة والجودة، ووقت نقل الملفات، وتكاليف التخزين السحابي.

كما أن اختيار ملف تعريف الترميز والإطارات B وقيم إحاطة QP أكثر أهم في هذه المرحلة أكثر من أهميتها أثناء الالتقاط.

ننصح باستخدام معدل نقل بيانات يتراوح بين 4 و5 ميغابت في الثانية (للدقة 720×1280) لضمان الحصول على جودة جيدة. وجودة الصورة المرئية.

معامل الكم (QP)

في نظام التشغيل Android 12 والإصدارات الأحدث، تكون مفاتيح QP موحّدة وتتوفّر في MediaFormat في واجهة برمجة التطبيقات مكتبة وسائط NDK. في إصدارات Android السابقة، لا يمكن معالجة QP إلا من خلال إطار العمل باستخدام مفاتيح خاصة بالمورّدين في إعدادات MediaFormat.

يتم التسجيل

أثناء التقاط الفيديو، يمكنك استخدام التحكم في معدل نقل البيانات بدلاً من إعدادات QP التي ليست متوفرة دائمًا.

لا ننصح بتعديل إعدادات QP لمعدل نقل بيانات الالتقاط الذي يبلغ 10 ميغابت في الثانية. (لنسبة 720×1280). إذا كان معدل نقل بيانات الالتقاط أقل بكثير، أقل من 5 ميغابت في الثانية 720×1280، كان ضبط QP 40 هو حل وسط جيد بين زيادة الجودة بدون دفع برنامج الترميز إلى تجاوز معدّل نقل البيانات المستهدَف بمعدّل مرتفع

المشاركة

ننصح بحد أقصى QP يبلغ 40، خاصةً عندما يكون معدل نقل البيانات أقل من 4 ميغابت في الثانية. وفي حين أن هذا يضمن الحد الأدنى لجودة الفيديوهات المشفرة، إلا أنه يمكن أن ينتج بمعدل نقل بيانات أعلى. تعتمد الزيادة في معدل نقل البيانات على لمدى تعقيد الفيديو. وعلى الرغم من أن تطبيق المشاركة قد يقبل بعض التباين في لمعدل نقل بيانات الفيديو الذي تم إنشاؤه، فقد لا يتحمّل أي زيادة تتجاوز عتبة معينة.

يمكنك الحدّ من الزيادة في معدل نقل البيانات من خلال إعادة ترميز الفيديو لمشاركته مع حدّ أقصى QP أقل تقييدًا (أعلى) وهذا يمنح برنامج الترميز مزيدًا من الحرية التضحية بجودة الفيديو والحفاظ على الأجزاء الأخرى من الفيديو. يمكنك إعادة ترميز فيديو لمشاركته لأنها عملية تحويل ترميز؛ لقد قمتَ بالفعل التقط الفيديو الذي تنوي مشاركته.

يتمثل العيب في أن تكرار خطوة تحويل الترميز مع هذه تزيد الوقت المستغرق لمشاركة الفيديو. تتمثل إحدى طرق تقليل وقت الاستجابة هذا هو النظر إلى الفيديو الذي تم تحويل ترميزه جزئيًا لتحديد ما إذا كان ضمن تساهلك مع الزيادة في معدل نقل البيانات وإذا لم يكن كذلك، فيمكنك إيقاف لتحويل الترميز وإعادة المحاولة باستخدام معلمات QP أكثر ملاءمةً.

الإطارات B وملفات الترميز الشخصية

ننصحك باستخدام الإطارات B أثناء خطوة المشاركة فقط، وعند التشغيل فقط. الإصدار 10 من Android أو إصدار أحدث

يجب أن تتحقق التطبيقات من ملفات الترميز المتوافقة باستخدام CodecCapabilities، نظرًا لعدم توافق جميع الأجهزة مع الملفات الشخصية الرئيسية أو العالية. استخدام الملف الشخصي الأعلى يتوافق مع برنامج ترميز AVC: مرتفع القائمة الرئيسية > المرجع. للحصول على النتائج الأكثر أمانًا، تكوين الإطارات ب (KEY_LATENCY أو KEY_MAX_B_FRAMES) عند استخدام خط الأساس لأنّ بعض برامج الترميز قد يتعذّر ضبطها.

تفترض شرائح الرمز التالية أنّ السمة 'MediaFormat format' سيتم استخدامها إعداد برنامج ترميز AVC

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 برامج الترميز من إنشاء إطارات B، ولكن لا تزال يستفيد من كفاءات الترميز الأخرى.

إذا كان تطبيقك لا يستخدم MediaMuxer لتجميع ملف الإخراج النهائي، يمكنك لتفعيل الإطارات B عن طريق ضبط القيمة KEY_LATENCY على 2 بدلاً من 1. من المفترض أن يؤدي هذا تسمح لبرنامج الترميز بإنتاج إطارات ب.

Android 7.1 والإصدارات الأقدم

الإصدار 25 والإصدارات الأقدم من واجهة برمجة التطبيقات

يمكنك استخدام الملف التعريفي الأساسي للحصول على النتائج الأكثر أمانًا.

format.setInt32(KEY_PROFILE, AVCProfileBaseline);

قبل الإصدار 7، لا تتوافق ميزة AOSP مع Android إلا مع الملف الشخصي الأساسي. ومع ذلك، من المحتمل أن المصنّعين الأصليين للأجهزة قد فعّلوا صفحة رئيسية/عالية المستوى على بعض الأجهزة، ربما من خلال باستخدام ملف شخصي خاص بالبائع.

إذا كان تطبيقك لا يستخدم MediaMuxer، يمكنك استخدام ملف الدفع الرئيسي أو العالي عند فإن برنامج الترميز يدعم ذلك. لا يوجد مفتاح تنسيق عام للتحكم في عدد رموز-B الإطارات.

استخدام وحدة المحوِّل لتحويل ترميز HDR إلى SDR

بدءًا من نظام التشغيل Android 13 (المستوى 33)، ننصحك باستخدام الميزات المتوفّرة في Jetpack Media3 المحوِّل لمشاركة محتوى النطاق العالي الديناميكية مع التطبيقات والخدمات والأجهزة التي لا تقنية HDR تعمل وحدة المحوِّل عن طريق تعيين تدرّج لوني إدخال بث فيديو HDR إلى SDR وحفظ النتيجة بتنسيق MP4، ما يتيح التشغيل الناجح بدون فقدان التفاصيل أو سطوع الصورة.

ملاحظة: على الأجهزة التي تستهدف إصدارات النظام بين Android 12 (المستوى 32 لواجهة برمجة التطبيقات) حتى الإصدار Android 7.0 (المستوى 24 لواجهة برمجة التطبيقات)، تعمل وحدة "المحوّل" بشكل مختلف. في حال حذف يتوافق الجهاز مع النطاق العالي الديناميكية (HDR)، وسيشغّل تطبيقك المحتوى بدون ربط درجات اللون. إذا لم يكن الجهاز متوافقًا مع تقنية HDR، ستظهر رسالة خطأ تشير إلى أنّ هذه التقنية. لا تتوفر إمكانية تعيين التدرج اللوني.

يقوم الكود التالي بإعداد محوّل يحدد نغمة المدخلات على 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();

لتجربة وظيفة تعيين الدرجة اللونية، راجع تطبيق Transformer التجريبي:

يمكنك أيضًا إعداد تعيين الدرجات باستخدام MediaCodec، على الرغم من أن التنفيذ أكثر تعقيدًا. لمزيد من المعلومات، يُرجى الاطّلاع على المستندات المرجعية لبرامج MediaCodec