arecord und aplay in der Audio-Injektor-Soundkarte

arecord und aplay in der Audio-Injektor-Soundkarte

Ich möchte ein FIFO mit Arecord und Aplay in Raspberry Pi3 erstellen. Wenn ich an einem Ende ein Musiksignal vom Audio-Injektor sende, wird es richtig angezeigt, aber die Musik am anderen Ende wird deaktiviert. Ich verwende „arecord -f S16_LE -r 44100 -V stereo -c1 -D plughw:2 | aplay -D plughw:2“

Sagen Sie mir bitte, wie ich das Problem lösen und wie ich den Befehl stoppen kann, ohne Strg+C zu verwenden???

Antwort1

Ich bin mir nicht sicher, was Sie versuchen, insbesondere verstehe ich nicht "die Musik am anderen Ende deaktivieren", aber

1) Das Weiterleiten von Audiostreams ist in Pulseaudio (oder Jack) viel einfacher als in ALSA.

2) Bei der Verwendung arecordin einer Pipe sollte nicht das WAV-Format verwendet werden, da der WAV-Header eine Längenangabe hat, die in einer Pipe nicht ausgefüllt werden kann. Verwenden Sie entweder raw ( -t raw) und geben Sie in die richtigen Parameter ein aplay, oder verwenden Sie das SUN-Audioformat ( -t au).

3) Die arecord-aplay-Pipe wird ausgeführt, bis Sie sie entweder mit Strg+C stoppen oder bis einer oder beide Prozesse beendet werden (mit kill). Es gibt keine andere Möglichkeit, dies zu tun.

Antwort2

Um Ihren Befehl zu stoppen, fügen Sie der Aufzeichnung eine Dauervariable (-d) in Sekunden hinzu, und zwar wie folgt:

arecord -f S16_LE -r 44100 -V stereo -c1 -d2 -D plughw:2 | aplay -D plughw:2

Dieser Befehl stoppt die Aufnahme nach -d2 oder 2 Sekunden.

Wenn Sie den Befehl alsamixer verwenden, können Sie die Mischpulteinstellungen ändern. Dadurch können Sie den Eingang (Mikrofon oder Leitung) auswählen sowie den HiFi-Ausgang aktivieren (um den Ton zu hören). Außerdem können Sie den Bypass-Modus aktivieren, der den Audioeingang direkt über das analoge System und nicht über die CPU zum Ausgang leitet. Im Bypass-Modus können Sie weiterhin arecord verwenden, um das Signal aufzunehmen.

verwandte Informationen