Introduction
Android Studio Flamingo (2022.2.1) で正式に導入された、開発マシンに接続した Android 端末のスクリーン映像を開発マシンに表示する機能である Device Mirroring。
この機能を使うと、端末画面の録画が開発マシンから実施できて非常に便利なのだが…ワクワクしながら使ったすぐにエラーが発生したがっかり。
それがこのエラー。
上記のエラーの文字に従ってログを確認すると
Codec2 component “c2.android.vp8.encoder” died. が出力されている。
日本語の情報は全くなく、英語でも断片的な情報がわずかにあるのみ。
How to resolve?
結論から言えば、端末のビデオエンコーダの性能問題の可能性が高いため、ミラーリングの際の負荷を抑えることが解決策である。
この件に関して、重要な情報が Device mirroring error というタイトルで Android Studio の Issue Tracker で報告されていた。studioFlags.xml
というファイルを開発マシンに用意することで、上記のミラーリングの負荷を抑制できる。studioFlags.xml
の中身は下記。
1 | <application> |
このファイルを ~/Library/Application Support/Google/AndroidStudio<Android Studio のバージョン>/option
にコピーする。studioFlags.xml
を追加または編集した際には、Android Studio を再起動すること。
重要なのは device.mirroring.max.bit.rate
の value
である。
この値が、ミラーリングの際、開発マシンに映像データを送信する際のビットレートで、初期値は 8000000
。
これはエラーが発生時、Logcat に下記のようなログが表示されることからわかる。
1 | 2024-02-18 00:15:10.628 22546-22570 CCodecBuffers app_process D [c2.android.vp8.encoder#721:Output[N]] popFromStashAndRegister: at 10189435427us, output format changed to AMessage(what = 0x00000000) = { |
初期値の 8000000
より小さな値を指定することで、エンコードのビットレートを変化させ、安定したミラーリングが可能になると推測できる。
私の環境では SONY SO-41B (2021年発売) とそこそこ新しい端末であったが、とりあえず、先述の Issue で提案されていた 1000000
に変更することで問題を回避することができた。
だが、Issue では、500000
、200000
、100000
と値を下げたにもかかわらず現象が回避できなかったと報告されている。
報告者の端末は Samsung SM-T220 (2021年発売) であり、開発側は Mediatek のようなローエンドの CPU の使用を避けるように提言していた。