video action - كيفية استخدام فك تشفير الفيديو المعجل للأجهزة على Android؟




bar example (4)

قد ترغب في تجربة MediaExtractor و MediaCodec (وهي متوفرة أيضًا في NDK - AMediaExtractor و AMediaCodec - شاهد نموذجًا للعب .mp4 هنا native-codec )

أحتاج إلى فك تشفير H.264 المعجل بالأجهزة لمشروع بحثي ، لاختبار بروتوكول ذاتي التحديد.

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

  1. استخدم ffmpeg libstagefright ( نظرة عامة على libstagefright ) أو استخدم libstagefright في نظام التشغيل مباشرة ، مثل here .
  2. استخدم OpenMax على نظام أساسي معين للأجهزة. مثل هنا حول جهاز سامسونج وهنا عن سلسلة Qualcomm Snapdragon
  3. ذكر بعض الناس PVplayer ،

بعض الناس "say" libstagefright هو السبيل الوحيد في حين جعلت كوالكوم الرجال النجاح الواضح.

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

كما اختبرت بعض مشغلات الفيديو لتسريع H / W مع Galaxy Tab 7.7 (3.2 & Enxyos) و VLC و Mobo و Rock و vplayer و rock و mobo تعمل بشكل جيد ، VLC لا يعمل ، يبدو أن vplayer يؤدي علة التي تكلف أدائها.

على أي حال ، فعلت "عملية" على Rockplayer وحذف جميع ملفاتها .so libs في data \ data \ com.redirecting \ rockplayer ، وتعطل فك تشفير البرامج بينما لا يزال يعمل فك التشفير! أتساءل كيف فعلوا ذلك. يبدو لي أن تسارع الأس الهيدروجيني قد يكون مستقلاً عن منصات الأجهزة.

يمكن للشخص أن مسمار هذه المشكلة؟ أو تقديم أي إشارة مع معلومات إضافية أو تفاصيل أفضل؟


للإجابة عن السؤال أعلاه ، دعني أقدم بعض المفاهيم المتعلقة بنظام Android

يستخدم OpenMAX Android OpenMAX لواجهة برنامج الترميز. ومن ثم ، فإن كل برامج الترميز (الأجهزة المسرّعة أو غير ذلك) توفر واجهة OpenMAX. يتم استخدام هذه الواجهة بواسطة StageFright (إطار عمل المشغل) لفك تشفير الوسائط باستخدام برنامج الترميز

يسمح NDK Android لتطبيقات Java بالتفاعل مع المكتبات الأصلية C / C ++ باستخدام NDK. وهذا يتطلب استخدام JNI (واجهة جافا المحلية).

الآن تأتي إلى سؤالك How to tap native decoder to decode raw video bitstream?

في الإصدار 4.0 من Android والإصدارات الأقدم ، لم يوفر Android إمكانية الوصول إلى أجهزة فك ترميز الفيديو الأساسية في طبقة Java. ستحتاج إلى كتابة تعليمة برمجية أصلية للتفاعل المباشر مع مفكك التشفير OMX. على الرغم من أن هذا ممكن ، إلا أنه ليس تافهاً لأنه قد يحتاج إلى معرفة كيفية عمل OMX وكيفية تعيين OMX إلى التطبيق باستخدام NDK.

في الإصدار 4.1 (إصدار Jelly Bean) ، يبدو أن Android يتيح الوصول إلى أجهزة فك ترميز الأجهزة المسرّعة على مستوى التطبيق من خلال واجهات برمجة التطبيقات JAVA. مزيد من التفاصيل حول واجهات برمجة التطبيقات الجديدة على http://developer.android.com/about/versions/android-4.1.html#Multimedia


استخدم ExoPlayer ( github ).

في مشروع مفتوح المصدر برعاية جوجل الذي يحل محل MediaPlayer للنظام الأساسي. كل مكون في خط الأنابيب قابل للتوسعة بما في ذلك مصدر العينة (كيف يتم استخراج الإطارات H.264 من البروتوكول المخصص الخاص بك) إلى التقديم (إلى Surface ، SurfaceTexture ، إلخ).

ويشمل التطبيق التجريبي لطيف يظهر الاستخدام .


Android SDK rev. يدعم الإصدار 17 تسريع الأجهزة الظاهرية باستخدام تقنيات المحاكاة الافتراضية لـ AMD و Intel.

هذه الميزة يمكن أن تحسن أداء المحاكي الكثير!

راجع القسم التالي في وثائق محاكي أندرويد لمزيد من التفاصيل: تكوين تسريع الجهاز الظاهري

لا تنس تثبيت برنامج التشغيل المناسب لنظام التشغيل الخاص بك:

بعد تثبيت برامج التشغيل وتنزيل صورة نظام Android X86 (كما هو موضح في الوثائق) ، يجب أن تتمكن من إنشاء AVD جديد باستخدام صورة x86:

فمثلا:

  • الهدف: Intel Atom x86 System Image - API Level 10
  • CPU / ABI: Intel Atom (x86)




android video h.264 hardware-acceleration stagefright