トラブルシューティング


デモアプリでローカル ファイルにアクセスできないのはなぜですか?

Android 11(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

特定のデバイスでエクスポートが失敗するのはなぜですか?

Media3 Issue Tracker で、問題を再現するのに十分な情報とともに問題を提出してください。デバイス固有の問題に対する回避策をライブラリに追加すると、時間の経過とともに互換性が向上します。

Transformer はリモート メディアの変換(または記録)をサポートしていますか?

Transformer は、MP4 などのメディア ファイル コンテナを含むリモート プログレッシブ ストリームをサポートしています。

ネットワーク状態が非常に低い場合、リモート メディアを長時間バッファリングすると、パイプラインが停止していることを識別することを目的としたチェックが muxer でトリガーされるため、エクスポートが失敗する可能性があります。Transformer.BuildermaxDelayBetweenMuxerSamplesMs を設定すると、デフォルトの動作をオーバーライドできます。

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 動画の処理に制限はありませんが、デバイスのハードウェア機能が原因でエクスポートできないことがあります。たとえば、8K をキャプチャできるデバイスでも、使用可能なハードウェア コーデックまたは RAM リソースを超過することで、8K 動画のデコードと再エンコードができない場合があります。

Transformer とプラットフォーム互換メディアのコード変換にはどのような関係がありますか?

互換性のあるメディアのコード変換は、Android 12(API レベル 31)以降の Android プラットフォーム機能で、最大 1 分間のメディアをアプリでサポートされている形式に変換します。この機能の使用にオプトインした場合、互換性のない形式のメディア ファイルを読み取るとオンデマンドでコード変換され、その結果は後で読み取りオペレーションのためにキャッシュに保存されます。

Transformer は形式変換もサポートしていますが、サポート ライブラリとして利用でき、コード変換処理はアプリ側ですべて管理できます。

エクスポートのレイテンシを短縮またはスループットを向上させるにはどうすればよいですか?

Transformer は、ハードウェア アクセラレーションによるデコードとエンコードに MediaCodec を使用し、動画フレームの処理に OpenGL を使用します。一般的なデバイスでの測定結果によれば、Transformer のスループットを制限する要因は、重い効果処理のないユースケースのハードウェア MediaCodec エンコーダのスループットです。これは、他の実装にも同様に影響を与える可能性があります。たとえば、プラットフォーム互換のコード変換機能は、Transformer と同様のパフォーマンスを発揮します。

デモアプリのデバッグ プレビューではスループットが大幅に低下するため、デモアプリのリリースビルドでテストする際はプレビュー機能を無効にし、パフォーマンスの現実的な把握を行ってください。