トラブルシューティング


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

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 と同程度のパフォーマンスを発揮します。

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