از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
رسانه ها
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.

Android شامل Stagefright است، یک موتور پخش رسانه در سطح بومی که دارای کدکهای مبتنی بر نرمافزار داخلی برای فرمتهای رسانه محبوب است.
ویژگی های پخش صوتی و تصویری Stagefright شامل ادغام با کدک های OpenMAX، مدیریت جلسه، رندر همگام سازی شده، کنترل حمل و نقل و DRM است.
Stagefright همچنین از ادغام با کدک های سخت افزاری سفارشی ارائه شده توسط شما پشتیبانی می کند. برای تنظیم یک مسیر سخت افزاری برای رمزگذاری و رمزگشایی رسانه، باید یک کدک مبتنی بر سخت افزار را به عنوان یک جزء OpenMax IL (لایه ادغام) پیاده سازی کنید.
توجه: بهروزرسانیهای Stagefright میتوانند از طریق فرآیند بهروزرسانی امنیتی ماهانه اندروید و بهعنوان بخشی از نسخهای از سیستمعامل Android رخ دهند.
معماری
برنامه های رسانه ای با چارچوب چند رسانه ای بومی اندروید مطابق معماری زیر تعامل دارند.

شکل 1. معماری رسانه
- چارچوب برنامه
- در سطح چارچوب برنامه، کد برنامه وجود دارد که از API های android.media برای تعامل با سخت افزار چند رسانه ای استفاده می کند.
- بایندر IPC
- پروکسیهای Binder IPC ارتباط را بر روی مرزهای فرآیند تسهیل میکنند. آنها در دایرکتوری
frameworks/av/media/libmedia
قرار دارند و با حرف "I" شروع می شوند. - چارچوب چند رسانه ای بومی
- در سطح بومی، اندروید یک چارچوب چندرسانه ای ارائه می کند که از موتور Stagefright برای ضبط و پخش صدا و تصویر استفاده می کند. Stagefright با یک لیست پیش فرض از کدک های نرم افزاری پشتیبانی شده ارائه می شود و می توانید کدک سخت افزاری خود را با استفاده از استاندارد لایه ادغام OpenMax پیاده سازی کنید. برای جزئیات بیشتر پیاده سازی، به مؤلفه های MediaPlayer و Stagefright واقع در
frameworks/av/media
مراجعه کنید. - لایه ادغام OpenMAX (IL)
- OpenMAX IL یک راه استاندارد برای Stagefright برای شناسایی و استفاده از کدک های چندرسانه ای مبتنی بر سخت افزار سفارشی به نام کامپوننت فراهم می کند. شما باید یک افزونه OpenMAX در قالب یک کتابخانه مشترک به نام
libstagefrighthw.so
ارائه دهید. این افزونه Stagefright را با مؤلفه های کدک سفارشی شما پیوند می دهد که باید طبق استاندارد مؤلفه OpenMAX IL پیاده سازی شوند.
کدک های سفارشی را پیاده سازی کنید
Stagefright دارای کدک های نرم افزاری داخلی برای فرمت های رسانه ای رایج است، اما می توانید کدک های سخت افزاری سفارشی خود را نیز به عنوان اجزای OpenMAX اضافه کنید. برای انجام این کار، باید اجزای OMX و یک پلاگین OMX ایجاد کنید که کدک های سفارشی شما را با چارچوب Stagefright به هم متصل کند. برای مثال اجزاء، به hardware/ti/omap4xxx/domx/
مراجعه کنید. برای یک نمونه پلاگین برای Galaxy Nexus، به hardware/ti/omap4xx/libstagefrighthw
مراجعه کنید.
برای افزودن کدک های خود:
- اجزای خود را طبق استاندارد مؤلفه OpenMAX IL ایجاد کنید. رابط کامپوننت در فایل
frameworks/native/include/media/OpenMAX/OMX_Component.h
قرار دارد. برای کسب اطلاعات بیشتر در مورد مشخصات OpenMAX IL، به وب سایت OpenMAX مراجعه کنید. - یک پلاگین OpenMAX ایجاد کنید که اجزای شما را با سرویس Stagefright پیوند دهد. برای رابطهای ایجاد افزونه، فایلهای هدر
frameworks/native/include/media/hardware/OMXPluginBase.h
و HardwareAPI.h
را ببینید. - افزونه خود را به عنوان یک کتابخانه مشترک با نام
libstagefrighthw.so
در Makefile محصول خود بسازید. به عنوان مثال:
LOCAL_MODULE := libstagefrighthw
در Makefile دستگاه خود، مطمئن شوید که ماژول را به عنوان یک بسته محصول اعلام کرده اید:
PRODUCT_PACKAGES += \
libstagefrighthw \
...
کدک ها را در معرض چارچوب قرار دهید
سرویس Stagefright system/etc/media_codecs.xml
و system/etc/media_profiles.xml
را تجزیه میکند تا کدکها و نمایههای پشتیبانی شده روی دستگاه را از طریق کلاسهای android.media.MediaCodecList
و android.media.CamcorderProfile
در اختیار توسعهدهندگان برنامه قرار دهد. شما باید هر دو فایل را در دایرکتوری device/<company>/<device>/
ایجاد کنید و آن را در پوشه system system/etc
تصویر سیستم در Makefile دستگاه خود کپی کنید. به عنوان مثال:
PRODUCT_COPY_FILES += \
device/samsung/tuna/media_profiles.xml:system/etc/media_profiles.xml \
device/samsung/tuna/media_codecs.xml:system/etc/media_codecs.xml \
برای مثالهای کامل، به device/samsung/tuna/media_codecs.xml
و device/samsung/tuna/media_profiles.xml
مراجعه کنید.
توجه: از Android 4.1، عنصر <Quirk>
برای کدکهای رسانه دیگر پشتیبانی نمیشود.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Media\n\nAndroid includes Stagefright, a media playback engine at the native level\nthat has built-in software-based codecs for popular media formats.\n\nStagefright audio and video playback features include integration with\nOpenMAX codecs, session management, time-synchronized rendering, transport\ncontrol, and DRM.\n\nStagefright also supports integration with custom hardware codecs provided by\nyou. To set a hardware path to encode and decode media, you must implement a\nhardware-based codec as an OpenMax IL (Integration Layer) component.\n\n**Note:** Stagefright updates can occur through the\nAndroid [monthly security\nupdate](/docs/security/bulletin) process and as part of an Android OS release.\n\nArchitecture\n------------\n\nMedia applications interact with the Android native multimedia framework\naccording to the following architecture.\n\n**Figure 1.** Media\narchitecture\n\nApplication Framework\n: At the application framework level is application code that utilizes\n [android.media](http://developer.android.com/reference/android/media/package-summary.html)\n APIs to interact with the multimedia hardware.\n\nBinder IPC\n: The Binder IPC proxies facilitate communication over process boundaries.\n They are located in the `frameworks/av/media/libmedia` directory and\n begin with the letter \"I\".\n\nNative Multimedia Framework\n: At the native level, Android provides a multimedia framework that utilizes\n the Stagefright engine for audio and video recording and playback. Stagefright\n comes with a default list of supported software codecs and you can implement\n your own hardware codec by using the OpenMax integration layer standard. For\n more implementation details, see the MediaPlayer and Stagefright components\n located in `frameworks/av/media`.\n\nOpenMAX Integration Layer (IL)\n: The OpenMAX IL provides a standardized way for Stagefright to recognize and\n use custom hardware-based multimedia codecs called components. You must provide\n an OpenMAX plugin in the form of a shared library named\n `libstagefrighthw.so`. This plugin links Stagefright with your custom\n codec components, which must be implemented according to the OpenMAX IL\n component standard.\n\nImplement custom codecs\n-----------------------\n\nStagefright comes with built-in software codecs for common media formats, but\nyou can also add your own custom hardware codecs as OpenMAX components. To do\nthis, you must create the OMX components and an OMX plugin that hooks together\nyour custom codecs with the Stagefright framework. For example components, see\nthe `hardware/ti/omap4xxx/domx/`; for an example plugin for the\nGalaxy Nexus, see `hardware/ti/omap4xx/libstagefrighthw`.\n\nTo add your own codecs:\n\n1. Create your components according to the OpenMAX IL component standard. The component interface is located in the `frameworks/native/include/media/OpenMAX/OMX_Component.h` file. To learn more about the OpenMAX IL specification, refer to the [OpenMAX website](http://www.khronos.org/openmax/).\n2. Create a OpenMAX plugin that links your components with the Stagefright service. For the interfaces to create the plugin, see `frameworks/native/include/media/hardware/OMXPluginBase.h` and `HardwareAPI.h` header files.\n3. Build your plugin as a shared library with the name `libstagefrighthw.so` in your product Makefile. For example: \n\n ```\n LOCAL_MODULE := libstagefrighthw\n ```\n\n In your device's Makefile, ensure you declare the module as a product\n package: \n\n ```\n PRODUCT_PACKAGES += \\\n libstagefrighthw \\\n ...\n ```\n\nExpose codecs to the framework\n------------------------------\n\nThe Stagefright service parses the `system/etc/media_codecs.xml`\nand `system/etc/media_profiles.xml` to expose the supported codecs\nand profiles on the device to app developers via the\n`android.media.MediaCodecList` and\n`android.media.CamcorderProfile` classes. You must create both files\nin the `device/\u003ccompany\u003e/\u003cdevice\u003e/` directory\nand copy this over to the system image's `system/etc` directory in\nyour device's Makefile. For example: \n\n```\nPRODUCT_COPY_FILES += \\\n device/samsung/tuna/media_profiles.xml:system/etc/media_profiles.xml \\\n device/samsung/tuna/media_codecs.xml:system/etc/media_codecs.xml \\\n```\n\nFor complete examples, see `device/samsung/tuna/media_codecs.xml`\nand `device/samsung/tuna/media_profiles.xml` .\n\n**Note:** As of Android 4.1, the\n`\u003cQuirk\u003e` element for media codecs is no longer supported."]]