Ich versuche, Voicemail-Nachrichten vom Verizon Fios-Telefon in bester Qualität zu speichern. Die Voicemail-Nachrichten sind online verfügbar , aber nur zum Abspielen (Java-basierter Player), kein Speichern. Offiziell gibt es keine unterstützte Möglichkeit, digitale Original-Sprachnachrichten als Dateien vom Fios Digital Voice-Dienst zu speichern (kein kostenpflichtiger Dienst, nichts, kein Grund dafür).
Meine einzige Idee war, auf dem Weg zur Soundkarte digitale Daten vom Player aufzuzeichnen. Ich habe versucht, Linux ALSA Konfiguration mit Loop-Gerät.
# 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"
}
}
}
Dies scheint zu funktionieren und zeichnet Audio auf. Wenn Sie beispielsweise etwas auf Youtube abspielen, wird der Audioausgang an das Loop-Gerät gesendet (Standard-Audioausgang) und ich kann ihn aufnehmen (nicht sicher, wie er genau funktioniert, ich habe sowohl 44,1 kHz als auch 48 kHz getestet )
arecord -f cd -D loop | aplay -f cd -D hw:0,0
arecord -f dat -D loop | aplay -f dat -D hw:0,0
Aber als ich versucht habe, die Ausgabe des Verizon Java Audio Players zu erfassen, ist diese verstümmelt und die Länge scheint nicht zu stimmen. Ich vermute, es könnte Mono bei 8 kHz sein und ich habe verschiedene Dinge ausprobiert, die Frequenz und die Formate geändert, aber nichts hat geholfen.
Haben Sie eine Idee, was hier falsch ist und wie die Nachrichten aufgezeichnet werden sollen? Liegt das Problem in der ALSA-Konfiguration? Oder möglicherweise Kernelproblem? (Ich benutze 3.4.88). Irgendwelche Ideen wären sehr willkommen.
Antworten:
Interessante Frage, vor langer Zeit habe ich über eine einfache Aufnahme von digitalem Audio und Video nachgedacht, die über einige virtuelle Audio- und Videotreiber möglich ist, aber nie dort angekommen ist.
Ich habe Ihre Konfigurationsdatei verwendet und hatte genau das gleiche Problem wie Sie beschrieben. (Ich habe OSS-Kompatibilitätstreiber aus ALSA entfernt, verschiedene Kernel getestet - schien keine Rolle zu spielen und Debian Wheezy verwendet).
Die obigen Befehle werden für die Lautsprecher alle in Ordnung wiedergegeben
Jetzt von Loop aufnehmen und nach vorne spielen
Alle senden Audio an Loop und spielen über Lautsprecher OK
aber hier ist der Ton kaputt - sehr verzerrt !!! Spielen Sie einfach auf dem Standardgerät. Wiedergabe über Schleife angegeben funktioniert!
Nachdem ich verschiedene Änderungen ausprobiert hatte, testete ich diese Modifikation von asound.conf
Es hat das Problem gelöst! Wenn das Standardgerät Loopout ist, funktioniert es. Der Versuch
arecord -f cd -D loopin | aplay -f cd -D front
hatte keine Wirkung. Ich bin mir nicht sicher, wie die Schleife funktioniert, aber dies konnte das Audio aufnehmen. Oder ein Fehler in ALSA? Verwenden Sie Debian? Funktioniert es für dich?Hinweise zu anderen Vorschlägen zur Lösung des Problems:
So sichern Sie den Netzwerkstrom: Ich gehe davon aus, dass die Übertragung verschlüsselt wird (https ???), wenn die Anwendung nicht möchte, dass Sie Daten speichern. Falls der Player das Serverzertifikat nicht überprüft, wie erfassen Sie die Daten? Was ist Ihre bevorzugte schnelle und einfache Methode, um ein Mann in der Mitte zu werden und den Stream zu erfassen?
Pulseaudio: Wie bringe ich es auf Debian Wheezy zum Laufen? Das Wiki sagt, dass es einfach funktioniert. Es hat nicht.
Wie kann ich Fehler beheben, was gerade passiert? (Werkzeuge, diag?)
Jack: Ich habe keine einfachen Anweisungen zur Installation von Jack gefunden. Es scheint ziemlich komplex. Geht es davon aus, dass Pulseaudio läuft? Die Dokumentation ist verwirrend. Haben Sie einen Link für einen schönen Schnellstart (wie installieren und testen Sie, um sicherzustellen, dass es funktioniert?)
Gehen Sie davon aus, dass die meisten Audioanwendungen (wie der Fios Voicemail Java Player) Pulseaudio oder Jack wiedergeben und kein Audio an ALSA senden können?
quelle
Hast du daran gedacht, "modprobe snd-aloop" zu machen? Ich habe es versucht und es funktioniert für mich mit Ihrer asound.conf auf Youtube, Pandora, Tunein, Vonage und diesem Java-Player . Könnte etwas Spezifisches für Fios sein, aber ich habe keine Fios zum Testen. Können Sie eine andere öffentlich zugängliche Site finden, die das Problem ebenfalls verursacht?
Versuchen Sie auch, in eine Datei aufzunehmen, und geben Sie sie dann wieder:
quelle
Beste Idee
Erstens, wenn ich Ihre Frage lese, würde ich das nicht so machen. Ich würde das Netzwerk beschnüffeln und versuchen, den Stream zu erfassen. Es ist wahrscheinlich an einem ziemlich vorhersehbaren Ort, der mit einem einfachen Aufruf an ausgeschrieben werden kann
tshark
. Das ist aber eine andere Frage.Verbesserung gegenüber ALSA
Während Ihre Methode ein gültiger Ansatz ist, würde ich ALSA nicht verwenden. ALSA ist eine Hardware-Abstraktionsschicht. Ich würde den Sound-Daemon verwenden, der fast überall in PulseAudio zu finden ist. Das macht mehr Sinn. Erstellen Sie eine Null-Senke.
Dieser Befehl gibt Ihre zurück
module id
. Das nützt uns nichts.Stellen Sie nun einfach die Umgebungsvariable ein
PULSE_SINK
. (sink_name im obigen Beispiel ist "MySink")Oder starten Sie ein Programm mit
PULSE_SINK=MySink
und diese Nullsenke erfasst den Stream.Wenn Sie es in eine Datei streamen möchten, führen Sie einfach Folgendes aus:
Opus mit niedriger Bitrate ist die beste Wahl für die Aufzeichnung von Telefongesprächen.
Fußnoten:
sox
dem Stream hinzufügen. Sieheman sox
, suchenvad
.--downmix-mono
einen Stereostream. Möglicherweise möchten Sie im ersten Schritt mit dem Senden deschannels=1
Arguments an experimentierenmodule-null-sink
. Telefone sind alle Mono.quelle
Nachdem Sie mehr als eine Stunde damit verbracht hatten, das ALSA-Loopback-Gerät unter Debian vergeblich einzurichten, bestand die effektivste und am wenigsten zeitaufwändige Lösung darin, ein tatsächliches Gerät in 5 Minuten zu löten .
Im Ernst, ich habe den Kernel neu kompiliert, um den ALSA-Loopback zu aktivieren. Ich habe die /etc/asound.conf und ~ / .asound.rc ohne Ergebnisse optimiert.
quelle
Ich empfehle die Verwendung von JACK. Dies ist eine rekursive Abkürzung für JACK Audio Connection Kit. Es ist genau auf Ihre Arbeit zugeschnitten und leitet Audio von einer Software, in Ihrem Fall dem Java-Wiedergabetool, zu einer anderen, einer Aufnahmesoftware. Es ist sehr gut für Aufnahmen mit geringer Latenz geeignet, was Ihnen meiner Meinung nach dabei helfen kann, die gewünschte Qualität zu erzielen.
Mit ihm können Sie Audio einfach von jeder Quelle auf Ihrem Computer an viele verschiedene Aufnahmewerkzeuge weiterleiten. Tatsächlich gibt es dafür eine sehr schöne GUI namens QjackCtl .
Auf dieser Seite erfahren Sie, wie Sie Audio vom Browser (Flash und möglicherweise Ihrem Java-Tool) an Jack weiterleiten. Wie dies geschieht, hängt von Ihrem System ab.
Zum Beispiel:
Ändern Sie Ihre
~/.asoundrc
oder~/asound.conf
:Dann sollten Sie in der Lage sein zu verwenden
quelle
pavucontrol
wird das Gleiche tun wie SieQjackCtl
, und Sie können sich immer bewegenpacmd move-sink-input
.pasuspender -- jackd
. Wenn das Poster jedoch Qualitätsprobleme aufweist, kann es hilfreich sein, etwas so Einfaches auszuprobieren. Außerdem macht es QjackCtl sehr einfach, Einstellungen anzupassen, die sichtbares Feedback zu Latenz und Xruns geben, die häufig eine Ursache für verstümmeltes Audio sind .