- 为什么我在演示版应用中无法访问本地文件?
- 为什么在特定设备上导出操作失败?
- Transformer 是否支持转换(或录制)远程媒体
- Transformer 是否支持 8k 输入?
- Transformer 与平台兼容的媒体转码有何关系?
- 如何缩短导出延迟时间或提高吞吐量?
为什么我无法访问演示版应用中的本地文件?
从 Android 11 开始,分区存储强制执行 (API 级别 30)禁止直接访问文件系统。适合在运行过程中 可以通过将外部 API 的 存储权限:
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
然后通过 adb 授予权限:
adb shell appops set --uid androidx.media3.demo.transformer \ MANAGE_EXTERNAL_STORAGE allow
为什么在特定设备上导出操作失败?
请提交有关 Media3 问题 跟踪器。 以重现问题。可在以下位置添加针对设备特定问题的解决方法: 以便逐步提升兼容性。
Transformer 是否支持转换(或记录)远程媒体?
Transformer 支持远程渐进式流,包括媒体文件容器 例如 MP4
在网络条件极差的情况下,由于正在缓冲,导出可能会失败
如果远程媒体时间过长,会在多路复用器中触发检查,
识别流水线卡住了您可以通过以下方法替换默认行为:
在 Transformer.Builder
上设置 maxDelayBetweenMuxerSamplesMs
:
Kotlin
Transformer.Builder(context) .setMaxDelayBetweenMuxerSamplesMs(C.TIME_UNSET) .build()
Java
new Transformer.Builder(context) .setMaxDelayBetweenMuxerSamplesMs(C.TIME_UNSET) .build();
传入 C.TIME_UNSET
会完全移除超时,但如果您的应用在
对于 MediaCodec
可能会卡住的芯片组,您可能需要设置一个更大的非零值
超时。
Transformer 是否支持 8k 输入?
Transformer 的实现方式与格式无关,因此没有 但设备上的硬件功能可能意味着 则导出操作失败。例如,即使在能够拍摄 8K 分辨率的设备上 由于超过 200 个参数, 可用的硬件编解码器或 RAM 资源。
Transformer 如何与平台兼容的媒体转码相关联?
兼容的媒体转码 是 Android 12(API 级别 31)中的一项 Android 平台功能,可将 将最长一分钟的媒体内容转换为应用支持的格式。如果您 选择启用这项功能,读取不兼容格式的媒体文件 会导致系统按需对其进行转码,并且将结果缓存起来以供日后读取 操作。
Transformer 还支持 转化,而 它作为支持库提供,并且应用可以完全控制 转码操作
如何缩短导出延迟时间或提高吞吐量?
Transformer 依赖 MediaCodec
进行硬件加速解码和
编码和 OpenGL 来处理视频帧。根据我们对
则 Transformer 吞吐量的限制因素是
MediaCodec
编码器吞吐量(适用于无重量级影响的用例)
处理。这可能会以同样的方式影响其他实现方式。对于
与平台兼容的转码功能的性能
Transformer。
演示版应用的调试预览会显著降低吞吐量,因此请关闭 在使用演示版应用的发布 build 进行测试时提供预览版功能,以获取 真实的想法和想法