- چرا نمیتوانم به فایلهای محلی در برنامه آزمایشی دسترسی داشته باشم؟
- چرا export کردن روی یک دستگاه خاص با شکست مواجه میشود؟
- آیا Transformer از تبدیل (یا ضبط) رسانههای از راه دور پشتیبانی میکند؟
- آیا ترنسفورمر از ورودی 8k پشتیبانی میکند؟
- ترنسفورمر چه ارتباطی با تبدیل کد رسانه سازگار با پلتفرم دارد؟
- چگونه میتوانم تأخیر در صادرات را کاهش دهم یا توان عملیاتی را افزایش دهم؟
چرا نمیتوانم به فایلهای محلی در برنامه آزمایشی دسترسی داشته باشم؟
اعمال محدودیت ذخیرهسازی محدود از اندروید ۱۱ (سطح API 30) مانع از دسترسی مستقیم به سیستم فایل میشود. برای تست دستی در حین توسعه، میتوان با اضافه کردن مجوز مدیریت ذخیرهسازی خارجی در مانیفست برنامه آزمایشی، به فایلهای محلی دسترسی پیدا کرد:
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
سپس از طریق adb مجوز را اعطا کنید:
adb shell appops set --uid androidx.media3.demo.transformer \
MANAGE_EXTERNAL_STORAGE allow
چرا export کردن روی یک دستگاه خاص با شکست مواجه میشود؟
لطفاً یک مشکل را در ردیاب مشکلات Media3 با اطلاعات کافی برای بازتولید مشکل ثبت کنید. راهحلهایی برای مشکلات خاص دستگاه را میتوان به کتابخانه اضافه کرد تا سازگاری به مرور زمان بهبود یابد.
آیا Transformer از تبدیل (یا ضبط) رسانههای از راه دور پشتیبانی میکند؟
ترنسفورمر از استریمهای پیشرفته از راه دور، از جمله فایلهای رسانهای مانند MP4، پشتیبانی میکند.
در شرایط بسیار ضعیف شبکه، ممکن است خروجی گرفتن با شکست مواجه شود زیرا بافر کردن رسانههای راه دور برای مدت طولانی، بررسیهایی را در muxer آغاز میکند که برای شناسایی گیر کردن خط لوله در نظر گرفته شدهاند. میتوانید با تنظیم maxDelayBetweenMuxerSamplesMs در Transformer.Builder ، رفتار پیشفرض را لغو کنید:
کاتلین
Transformer.Builder(context).setMaxDelayBetweenMuxerSamplesMs(C.TIME_UNSET).build()
جاوا
new Transformer.Builder(context).setMaxDelayBetweenMuxerSamplesMs(C.TIME_UNSET).build();
ارسال C.TIME_UNSET زمان وقفه را به طور کامل حذف میکند، اما اگر برنامه شما روی چیپستهایی اجرا میشود که MediaCodec در آنها گیر میکند، شاید بهتر باشد یک زمان وقفه بزرگتر و غیر صفر تنظیم کنید.
آیا ترنسفورمر از ورودی 8k پشتیبانی میکند؟
ترنسفورمر به صورت فرمت-آگنوستیک پیادهسازی شده است، بنابراین مدیریت ویدیوی 8k را محدود نمیکند، اما قابلیتهای سختافزاری دستگاه ممکن است به این معنی باشد که خروجی گرفتن نمیتواند موفقیتآمیز باشد. به عنوان مثال، حتی در دستگاههایی که میتوانند 8k ضبط کنند، ممکن است رمزگشایی و رمزگذاری مجدد یک ویدیوی 8k به دلیل فراتر رفتن از کدک سختافزاری یا منابع RAM موجود، امکانپذیر نباشد.
ترنسفورمر چه ارتباطی با تبدیل کد رسانه سازگار با پلتفرم دارد؟
تبدیل کد سازگار با رسانه، یک ویژگی پلتفرم اندروید از اندروید ۱۲ (سطح API ۳۱) است که فایلهای رسانهای تا طول یک دقیقه را به فرمتهای پشتیبانیشده توسط برنامه تبدیل میکند. اگر از این ویژگی استفاده کنید، خواندن یک فایل رسانهای با فرمت ناسازگار باعث میشود که در صورت تقاضا تبدیل کد شود و نتیجه برای عملیات خواندن بعدی ذخیره میشود.
ترنسفورمر همچنین از تبدیل فرمت پشتیبانی میکند، اما به عنوان یک کتابخانه پشتیبانی در دسترس است و برنامه کنترل کاملی بر عملیات تبدیل کد دارد.
چگونه میتوانم تأخیر در صادرات را کاهش دهم یا توان عملیاتی را افزایش دهم؟
ترنسفورمر برای رمزگشایی و کدگذاری شتابیافته سختافزاری به MediaCodec و برای پردازش فریمهای ویدیویی به OpenGL متکی است. بر اساس اندازهگیریهای ما روی دستگاههای معمولی، عامل محدودکننده در توان عملیاتی ترنسفورمر، توان عملیاتی کدگذار MediaCodec سختافزاری برای موارد استفاده بدون پردازش جلوههای ویژه سنگین است. این احتمالاً بر سایر پیادهسازیها نیز به همین ترتیب تأثیر میگذارد. به عنوان مثال، ویژگی کدگذاری سازگار با پلتفرم، عملکرد مشابهی با ترنسفورمر دارد.
پیشنمایش اشکالزدایی برنامهی آزمایشی به طور قابل توجهی توان عملیاتی را کاهش میدهد، بنابراین هنگام آزمایش با نسخه آزمایشی برنامه، ویژگی پیشنمایش را خاموش کنید تا ایدهای واقعبینانه از عملکرد داشته باشید.