Verizon Fios電話からのボイスメールメッセージを可能な限り最高の品質で保存しようとしています。ボイスメールメッセージは利用可能 オンライン ですが、再生のみ(Javaベースのプレーヤー)の場合は保存されません。正式には、元のデジタルボイスメッセージをFiosデジタルボイスサービスからファイルとして保存する方法はサポートされていません(有料サービス、何もない、理由はありません)。
私の唯一のアイデアは、サウンドカードに向かう途中でプレーヤーからデジタルデータを録音することでした。ループデバイスで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.1 kHzと48 Khzの両方をテストしました) )
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オーディオプレーヤーの出力は文字化けしており、長さが一致していないようです。8kHzでモノである可能性があり、さまざまなことを試して、頻度とフォーマット、しかし何も助けにはなりませんでした。
ここで何が問題になっているのか、メッセージを録音する方法はありますか? ALSA構成に問題がありますか?それともカーネルの問題ですか? (私は3.4.88を使用しています)。どんなアイデアでも大歓迎です。
興味深い質問ですが、昔、私はデジタルオーディオとビデオの単純な録音について考えていました。仮想オーディオとビデオドライバーを介して可能ですが、そこに到達することはできませんでした。
私はあなたの構成ファイルを使用しましたが、あなたが説明したのとまったく同じ問題がありました。 (私は確かにOSS互換性ドライバーをALSAから削除し、異なるカーネルをテストしました-問題ないと思われ、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で実行するにはどうすればよいですか? The Wiki は、機能することを示しています。それはしませんでした。
/etc/init.d/pulseaudio start
[warn] PulseAudio configured for per-user sessions ... (warning).
何が起こっているのかトラブルシューティングするにはどうすればよいですか? (ツール、診断?)
ジャック:ジャックをインストールする簡単な手順は見つかりませんでした。かなり複雑に見えます。 Pulseaudioが実行されていると想定していますか?ドキュメントは紛らわしいです。 Niceクイックスタートへのリンクはありますか(インストールしてテストし、機能することを確認する方法)。
ほとんどのオーディオアプリケーション(FiosボイスメールJavaプレーヤーなど)はPulseaudioまたはJackで再生でき、ALSAにオーディオを送信できないと思いますか?
DebianでALSAループバックデバイスを無駄にセットアップしようと1時間以上費やした後、最も効果的で最も時間のかからないソリューションは、実際のdeviceを5分ではんだ付けすることでした。
真剣に、私はALSAループバックを有効にするためにカーネルを再コンパイルし、/ etc/asound.confと〜/ .asound.rcを微調整しましたが、結果は出ませんでした。
「modprobe snd-aloop」を覚えていますか?私は試してみましたが、youtube、Pandora、tunein、vonage、および this Java player のasound.confで動作します。 Fiosですが、テストするFiosがありません。問題の原因となっている別の公開サイトを見つけられますか?
また、ファイルに録音してから再生します。
arecord -f cd -D loop > recording.wav
aplay -f cd -D hw:0,0 recording.wav
最初に、あなたの質問を読んで、私はこのようにはしません。ネットワークをスヌーピングしてストリームをキャプチャしようとしています。おそらく、予測可能な場所にあり、tshark
を呼び出すだけでスクリプトを作成できます。それは別の質問です。
あなたの方法は有効なアプローチですが、私はALSAを使用しません。ALSAはハードウェアアブストラクションレイヤーです。 PulseAudioのほぼすべてにあるサウンドデーモンを使用します。それはもっと理にかなっています。ヌルシンクを作成します。
$ pactl load-module module-null-sink sink_name=MySink
そのコマンドはあなたのmodule id
を返します。それは私たちには役に立たない。
次に、環境変数Pulse_SINK
を設定します。 (上記の例では、sink_nameは「MySink」です)
export Pulse_SINK=MySink;
または、Pulse_SINK=MySink
でプログラムを開始すると、そのnullシンクがストリームをキャプチャします。
それをファイルにストリーミングしたいときはいつでも、単に実行します:
parec -v -d MySink.monitor | opusenc --raw --downmix-mono --bitrate 64 - out.opus
低ビットレートのオーパスは、電話での会話を録音するのに最適です。
sox
を追加します。 man sox
を参照し、vad
を検索してください。--downmix-mono
を使用しています。最初のステップでchannels=1
引数をmodule-null-sink
に送信してみてください。電話はすべてモノラルです。JACKの使用を強くお勧めします。それは、JACK Audio Connection Kitの再帰的な頭字語です。あるソフトウェアからオーディオをルーティングしている場合は、Java再生ツールから別の記録ソフトウェアにオーディオをルーティングします。低遅延の記録に非常に適しています。 、あなたが探している品質を手に入れるのに役立つと思います。
これを使用すると、コンピューター上の任意のソースからさまざまな録音ツールにオーディオを簡単にルーティングできます。実際、 QjackCtl と呼ばれる非常に素晴らしいGUIがあります。
このページ は、ブラウザ(FlashおよびおそらくJavaツール)からジャックにオーディオをルーティングする方法をカバーしています。これがどのように行われるかは、システムによって異なります。
~/.asoundrc
または~/asound.conf
:
pcm.rawjack {
type jack
playback_ports {
0 system:playback_1
1 system:playback_2
}
capture_ports {
0 system:capture_1
1 system:capture_2
}
}
pcm.jack {
type plug
slave { pcm "rawjack" }
hint {
description "JACK Audio Connection Kit"
}
}
その後、あなたは使用できるはずです
arecord -D pcm.jack <file>