ALSAループデバイスを使用してWebベースのオーディオプレーヤーでオーディオを録音する

ALSAループデバイスを使用してWebベースのオーディオプレーヤーでオーディオを録音する

Verizon Fios携帯電話のボイスメールを可能な限り最高の品質で保存しようとしています。ボイスメールメッセージが利用可能オンラインただし、再生(Javaベースのプレーヤー)に固有のもので、保存はできません。 Fios Digital Voiceサービスで生のデジタル音声メッセージをファイルに保存する方法は正式にサポートされていません(有料サービスなし、コンテンツなし、理由なし)。

私の唯一のアイデアは、サウンドカードに転送しながらプレーヤーのデジタルデータを記録することです。 Linux ALSA構成にループデバイスを使用しようとしています。

# cat /etc/asound.conf

# default device
pcm.!default {
    type plug
    slave.pcm "loop"
}

# output device
pcm.loopout {
    type dmix
    ipc_key 328211
    slave.pcm "hw:Loopback,0,0"
}

# input device
pcm.loopin {
    type dsnoop
    ipc_key 686592
    slave.pcm "hw:Loopback,1,0"
}

# duplex plug device
pcm.loop {
    type plug
    slave {
      pcm {
         type asym
         playback.pcm "loopout"
         capture.pcm "loopin"
      }
    }
}

これは動作し、オーディオを録音するようです。たとえば、Youtubeで何かを再生すると、オーディオ出力はループデバイス(デフォルトのオーディオ出力)に移動してキャプチャできます(正しく動作するかどうかはわかりませんが、44.1kHzと48Khzをテストしました)。 )

arecord -f cd -D loop | aplay -f cd -D hw:0,0
arecord -f dat -D loop | aplay -f dat -D hw:0,0

しかし、Verizon Java Audio Playerの出力をキャプチャしようとすると、歪んで長さが一致しないようです。 8kHzモノかもしれないと思います。周波数やフォーマットを変更するなど、さまざまな方法を試しましたが、役に立ちません。

ここで何が起こり、メッセージを記録するかを知っていますか? ALSAの設定に問題がありますか?それともカーネルの問題でしょうか? (私は3.4.88を使用しています)。どんなアイデアでも大歓迎です。

ベストアンサー1

興味深い質問は、ずっと前に、仮想オーディオとビデオドライバを介して単にデジタルオーディオとビデオを録音することについて考えていましたが、決してそのようなことは起こりませんでした。

設定ファイルを使用しましたが、説明したのと同じ問題が発生しました。 (私はALSAからOSS互換ドライバを削除し、他のカーネルをテストしました。問題にならないようで、Debian Wheezyを使用しました)

$ alsaplayer -d front audio.mp3

$ mplayer -vo null -ao alsa:device=front video.mp4
AO: [alsa] 44100Hz 2ch s16le (2 bytes per sample)

$ mplayer -ao alsa:device=front audio.mp3
AO: [alsa] 44100Hz 2ch s16le (2 bytes per sample)

上記のコマンドはすべてスピーカーで正常に再生されます。

$ arecord -f cd -D loop | aplay -f cd -D front
Recording WAVE 'stdin' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

今ループで録音し、前方に再生します。

$ alsaplayer audio.mp3
$ alsaplayer -d loop audio.mp3

$ mplayer -vo null video.mp4
$ mplayer -vo null -ao alsa:device=loop video.mp4
AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)

$ mplayer -ao alsa:device=loop audio.mp3
AO: [alsa] 48000Hz 2ch floatle (4 bytes per sample)

ループにオーディオを送信し、スピーカーで再生するすべてがうまく動作します。

$ mplayer audio.mp3
AO: [alsa] 48000Hz 2ch floatle (4 bytes per sample)

しかし、ここでは音が壊れていました。非常に歪んだ!プライマリデバイスでのみ再生されます。ループで指定された再生が有効です!

さまざまな変更を試した後、asound.confの修正をテストしました。

pcm.!default {
    type plug
    slave.pcm "loopout"
}

問題が解決しました!基本デバイスがループの場合に機能します。効果がありませんでしたarecord -f cd -D loopin | aplay -f cd -D front。ループがどのように機能するかはわかりませんが、オーディオをキャプチャできます。それともALSAのバグですか? Debian を使用していますか?あなたに効果がありますか?

トラブルシューティングのための追加提案に関する注意事項:

ネットワークストリームをダンプするには:アプリケーションがデータを保存したくない場合は、トランスポートが暗号化されるとします(https???)。プレイヤーがサーバー証明書を検証しない場合、データをキャプチャする方法は?仲介者になってストリームをキャプチャする最も迅速で簡単な方法は何ですか?

Pulseaudio:Debian Wheezyでどのように実行しますか?ウィキペディアうまくいくと言ってください。そうではありませんでした。

/etc/init.d/pulseaudio start
[warn] PulseAudio configured for per-user sessions ... (warning).

発生する問題をどのように解決しますか? (ツール、診断?)

Jack:Jackをインストールする方法の簡単な説明が見つかりませんでした。かなり複雑に見えます。 Pulseaudioが実行されていると仮定しますか?文書が混乱しています。クイックスタート(動作していることを確認するためにインストールしてテストする方法)へのリンクはありますか?

ほとんどのオーディオアプリケーション(Fios Voicemail Java Playerなど)はPulseaudioまたはJackを再生できますが、オーディオをALSAに送信できないと思いますか?

おすすめ記事