Skip to content

cUDGk/aroute

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

aroute

再生中の音を横取りする、Android の仮想オーディオケーブル

Java Android Root License: MIT

あるアプリの再生音を、別アプリのマイクや録音・配信へ回す。APK インストール不要。

English


概要

Android には、あるアプリの再生音を別アプリのマイクへ回す(VoiceMeeter や仮想オーディオケーブル的な)ユーザー向けの手段が無い。配線自体は AUDIO_DEVICE_IN/OUT_REMOTE_SUBMIX として存在するが、REMOTE_SUBMIX を録音で開くには CAPTURE_AUDIO_OUTPUT(特権)が要る。

aroute は APK をインストールせず、root/shell で app_process 経由に叩く(scrcpy / sndcpy と同じ方式)。REMOTE_SUBMIX を開くとポリシーがメディア再生をそこへミラーするので、それを録音・再出力できる。

flowchart LR
    A[アプリの再生音] -->|AudioFlinger| S[(REMOTE_SUBMIX)]
    S -->|AudioRecord| R[aroute]
    R -->|AudioTrack / socket / file| O[別アプリ・録音・配信]
Loading

REMOTE_SUBMIX/dev/snd に出ない RAM 上のパイプで、AudioFlinger 越しにしか触れない(tinyalsa では届かないことを実測で確認済み)。

特徴 / モード

モード 内容
tone <freq> <secs> フレームワーク再生(AudioTrack)でサイン波を鳴らす。動作確認用
capture <secs> <outfile> REMOTE_SUBMIX を録音し、raw PCM(s16le / mono / 48k)に保存
route <secs> REMOTE_SUBMIXAudioTrack。横取り→再出力するライブケーブル

動作環境

  • root 必須REMOTE_SUBMIX 録音の特権を uid=0 で越える)
  • 検証済み: Android 14 / android-34 / x86_64 エミュレータ(440Hz を横取り録音できることを確認)
  • 実機・OS バージョンによっては MediaProjection の同意が要る場合がある

ビルド

要 JDK + Android SDK build-tools(d8)。

bash build.sh   # out/classes.dex を生成

使い方

adb push out/classes.dex /data/local/tmp/aroute.dex

# 再生音を 5 秒横取りして PCM 保存
adb shell "CLASSPATH=/data/local/tmp/aroute.dex \
  app_process /system/bin com.agapkit.aroute.AudioRouter capture 5 /data/local/tmp/out.pcm"

# 横取り→再出力(ライブケーブル)
adb shell "CLASSPATH=/data/local/tmp/aroute.dex \
  app_process /system/bin com.agapkit.aroute.AudioRouter route 10"

Attribution

app_process 経由で REMOTE_SUBMIX を叩く手法は scrcpy / sndcpy が確立したアプローチを参考にしている。

ライセンス

MIT License — 詳細は LICENSE を参照。

About

再生音を横取りするAndroidの仮想オーディオケーブル — REMOTE_SUBMIX・app_process・root

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors