ffmpeg superequalizer systemweit (ALSA) (oder bei chromium) anwenden?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
SPIRITUS
Beiträge: 74
Registriert: 24.11.2013 22:05:28

ffmpeg superequalizer systemweit (ALSA) (oder bei chromium) anwenden?

Beitrag von SPIRITUS » 07.09.2020 14:47:17

Hallo

Wie kann man den Debianffmpeg superequalizer systemweit (DebianALSA) (oder bei Debianchromium) anwenden?



-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Ich nutze TTY mit einige Programme wie zb Debianmpv.
Mit Debianmpv geht der superequalizer:
~/.config/mpv/config
af-add=superequalizer=1b=1:2b=.60560836:3b=.36676147:4b=.22211378:5b=.13451392:6b=.10644453:7b=.08146271:8b=.06446365:9b=.04933444:10b=.06446365:11b=.08146271:12b=.10644453:13b=.13451392:14b=.22211378:15b=.36676147:16b=.60560836:17b=1:18b=1
af-add=superequalizer=1b=1:2b=.13451392:3b=.04933444:4b=.02987731:5b=.02286528:6b=.01870909:7b=.02286528:8b=.02987731:9b=.03775596:10b=.04933444:11b=.06234395:12b=.08146271:13b=.13451392:14b=.22211378:15b=.36676147:16b=.60560836:17b=1:18b=1

(Ich nutze eine Textdatei NoPaste-Eintrag41130 mit Balken,
die Balken werden zu den zahlen umgerechnet und formatiert,
und beim ausführen des Aktualisierungsscript (nach dem schliesen von nano), die Zeile in der ~/.config/mpv/config ersetzt.)

Debianxorg nutze ich nur für Debianchromium (und für Debianmpv drm :? Framebuffer)
Debianchromium starte ich direkt (ohne Fenstermanager) mit Debianstartx und einer ~/.xinitrc

Benutzeravatar
smutbert
Beiträge: 8342
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: ffmpeg superequalizer systemweit (ALSA) (oder bei chromium) anwenden?

Beitrag von smutbert » 07.09.2020 16:04:40

was du machst ist mir nicht ganz klar, aber du könntest ffmpeg mit einer Loopbacksoundkarte „einschleifen“. Also zuerst das entsprechende Kernelmodul für diese virtuelle Soundkarte laden

Code: Alles auswählen

modprobe snd-aloop
Dann dafür sorgen, dass die Audioausgabe der Programme auf hw:Loopback oder plughw:Loopback erfolgt, zB mit einem Eintrag in der ~/.asoundrc oder /etc/asound.conf, zB

Code: Alles auswählen

pcm.!default {
        type plug
        slave.pcm "hw:Loopback"
}
Das Audiosignal dann mit ffmpeg abgreifen, wie gewünscht manipulieren und über die echte Soundkarte abspielen

Code: Alles auswählen

SDL_AUDIODRIVER='alsa' AUDIODEV='hw:0,0' ffplay -f alsa -i hw:Loopback,1 
wobei du hw:0,0 durch die gewünschte (echte) Soundkarte ersetzen musst.

SPIRITUS
Beiträge: 74
Registriert: 24.11.2013 22:05:28

Re: ffmpeg superequalizer systemweit (ALSA) (oder bei chromium) anwenden?

Beitrag von SPIRITUS » 07.09.2020 18:48:41

Ahh, danke. :)

Code: Alles auswählen

sudo modprobe snd-aloop
Keine ausgabe.

Code: Alles auswählen

#ACHTUNG dieser Befehl überschreibt die .asoundrc#    echo 'pcm.!default {type plug;slave.pcm "hw:Loopback"}'> ~/.asoundrc

Code: Alles auswählen

SDL_AUDIODRIVER='alsa' AUDIODEV='hw:0,0' ffplay -f alsa -i hw:Loopback,1

Code: Alles auswählen

error: XDG_RUNTIME_DIR not set in the environment.
Could not initialize SDL - No available video device
(Did you set the DISPLAY variable?)
Zuletzt geändert von SPIRITUS am 10.09.2020 15:47:30, insgesamt 2-mal geändert.

Benutzeravatar
smutbert
Beiträge: 8342
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: ffmpeg superequalizer systemweit (ALSA) (oder bei chromium) anwenden?

Beitrag von smutbert » 07.09.2020 19:33:16

oh, darüber dass ffplay X11 benötigt bin ich auch schon einmal gestolpert. Ohne X sollte es im Prinzip so gehen:

Code: Alles auswählen

ffmpeg -f alsa -i hw:Loopback,1 ... -f wav - | aplay -D plughw:0,0
also das aufgenommene Audiosignal mit ffmpeg aufzunehmen, zu bearbeiten und an ein Programm weiterzupipen, das es dann abspielt.

Gegebenenfalls muss man aplay auch noch das Audioformat mitteilen, aber gescheitert ist es bei meinen Versuchen an der Pipe – ich habe es nicht geschafft ffmpeg dazu zu bringen die Audiodaten über stdout oder eine named pipe auszugeben.
Ich kenne mich mit ffmpeg aber sowieso vorne und hinten nicht aus, vielleicht weißt du da etwas. Bei mir hat nur der Umweg über eine normale Datei funktioniert

Code: Alles auswählen

ffmpeg -f alsa -i hw:Loopback,1 ... -f wav audioausgabe.wav
aplay -D plughw:0,0 audioausgabe.wav
was natürlich eher keine alltagstaugliche Lösung ist.

SPIRITUS
Beiträge: 74
Registriert: 24.11.2013 22:05:28

Re: ffmpeg superequalizer systemweit (ALSA) (oder bei chromium) anwenden?

Beitrag von SPIRITUS » 07.09.2020 19:43:32

Code: Alles auswählen

ffmpeg -f alsa -i hw:Loopback,1 -af superequalizer=1b=1:2b=.60560836:3b=.36676147:4b=.22211378:5b=.13451392:6b=.10644453:7b=.08146271:8b=.06446365:9b=.04933444:10b=.06446365:11b=.08146271:12b=.10644453:13b=.13451392:14b=.22211378:15b=.36676147:16b=.60560836:17b=1:18b=1 -f wav - | aplay -D plughw:0,0
Ah, es geht, aber die Verzögerung ist ziemlich groß.
Zu groß für mich.
Überhaupt, da die Verzögerung nicht nur den X Browser betrifft, sondern alles,
auch beim Filme/Serien schauen mit Debianmpv.
Und so muss ständig etwas im Hintergrund aktiv laufen, auch wenn Audio inaktiv ist.

Aber danke für die Mühe. :)

Benutzeravatar
smutbert
Beiträge: 8342
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: ffmpeg superequalizer systemweit (ALSA) (oder bei chromium) anwenden?

Beitrag von smutbert » 07.09.2020 22:18:35

Das war leider zu erwarten, aber es gibt andere Equalizer, die sich einfacher und mit deutlich weniger Verzögerung nutzen lassen, allen voran der in Alsa eingebaute (Debianlibasound2-plugin-equal) oder eventuell ladspa-Plugins, die sich in Alsa einbinden lassen.
Zum Alsa-Equalizer habe ich hier schon ein bisschen etwas geschrieben: https://wiki.debianforum.de/Audiokonfig ... r_von_ALSA (ist zwar überarbeitungsbefürftig. aber könnte helfen)

SPIRITUS
Beiträge: 74
Registriert: 24.11.2013 22:05:28

Re: ffmpeg superequalizer systemweit (ALSA) (oder bei chromium) anwenden?

Beitrag von SPIRITUS » 08.09.2020 12:38:21

Ich hatte auch lange den Debianalsa ('equal') 10 Band Equalizer.
Dann den Debianalsa Debianlibasound2-plugin-equal ('equal1') 15 Band Equalizer:
viewtopic.php?f=25&t=148913

Aber da hatte ich immer diese Verzerrungen im tieffrequenten bereich:
viewtopic.php?f=25&t=148913#p1105489

Ich glaub ab 'Devuan 3 Beowulf' ('Debian 10 Buster' Forg) oder umstieg von Debianmplayer zu Debianmpv,
hatte ich noch neue schlimmere Probleme.
Ich weiß gerade nicht mehr genau was da war.

Dann bin ich zum Debianffmpeg superequalizer umgestiegen,
Qualität und Frequenzweichung am Anfang und ende und auch dazwischen, ist viel besser.

Am wichtigsten ist mir meine Hauptsysteme, also z.B. die zum Filme/Serien gucken.
Das mach ich mit Debianmpv im TTY(1).
Da gehts ja jetzt super mit dem superequalizer.

Debianxorg Browser sind für mich ein temporäres extra (für so verscriptete/vermurkste/... Seiten wie 'You'Tube).
Und ja, man kann 'You'Tube/... Video/Audio auch mit zb Debianmpv über Debianyoutube-dl streamen,
das tu ich auch teilweise, aber im Browser kann man schnell mal in such Ergebnisse und Vorschläge reinschauen.
Auch bei Browser spiele wär ein guter Ton nicht schlecht.
(Equalizer Erweiterungen für Debianchromium, hab ich alle schon mehrmals durchprobiert, alles Murks.)

Aber es ist es mir nicht wert, das ich meine Hauptsysteme schlechter mach,
damit ich bei den Extras bisschen was besser mach.
Das müsste dann schon eine saubere gute Lösung sein, oder nur für den X Browser.

SPIRITUS
Beiträge: 74
Registriert: 24.11.2013 22:05:28

Re: ffmpeg superequalizer systemweit (ALSA) (oder bei chromium) anwenden?

Beitrag von SPIRITUS » 10.09.2020 15:24:50

So gehts besser (, aber auch keine lösung für mich):

Code: Alles auswählen

sudo modprobe snd-aloop
#ACHTUNG dieser Befehl überschreibt die .asoundrc#    echo 'pcm.!default {type plug;slave.pcm "hw:Loopback"}'>~/.asoundrc
AUDIODEV='hw:0' ffplay -nodisp -f alsa -i hw:Loopback,1 -af superequalizer=1b=1:2b=.60560836:3b=.36676147:4b=.22211378:5b=.13451392:6b=.10644453:7b=.08146271:8b=.06446365:9b=.04933444:10b=.06446365:11b=.08146271:12b=.10644453:13b=.13451392:14b=.22211378:15b=.36676147:16b=.60560836:17b=1:18b=1
smutbert hat geschrieben: ↑ zum Beitrag ↑
07.09.2020 19:33:16
oh, darüber dass ffplay X11 benötigt bin ich auch schon einmal gestolpert.
Mit -nodisp gehts auch ohne Debianxorg.

SPIRITUS
Beiträge: 74
Registriert: 24.11.2013 22:05:28

Re: ffmpeg superequalizer systemweit (ALSA) (oder bei chromium) anwenden?

Beitrag von SPIRITUS » 13.10.2020 15:19:52

Kennt jemand eine saubere systemweite Equalizer alternative? (ohne Debianxorg als Abhängigkeit)
Eine saubere Alternative zu Debianalsa, wäre generell nicht schlecht.

Benutzeravatar
smutbert
Beiträge: 8342
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: ffmpeg superequalizer systemweit (ALSA) (oder bei chromium) anwenden?

Beitrag von smutbert » 14.10.2020 22:20:25

Eine Möglichkeit wären die ladspa-Plugins, die ich ja schon erwähnt habe. Die lassen sich mit einem Alsa-Plugin, namens ladspa in Alsa einbinden, ein Konfigurationsbeispiel findet sich hier: https://alsa.opensrc.org/LADSPA_plugins
Als Equalizer-Plugin kann man beispielsweise mbeq (für Multibandequalizer, also die Datei /usr/lib/ladspa/mbeq_1197.so aus Debianswh-plugins) verwenden, aber es finden sich zweifellos unzählige Alternativen, mit unterschiedlichen Fähigkeiten und Vorzügen. Beim Kennenlernen der verschiedenen Plugins, deren Namen und deren Parameter helfen die Kommandozeilentools aus Debianladspa-sdk (listplugins, analyseplugins)

Allerdings habe ich die Erfahrung gemacht, dass manche Anwendungen nicht mit allen Alsa-Plugins zusammenarbeiten wollen und dann muss man schlimmstenfalls wieder den Umweg über die Loopbacksoundkarte gehen. Das wirkt sich wieder negativ auf die Latenz aus, aber andererseits gibt es dann neben den Alsaplugins und ffmpeg/ffplay noch zahlreiche andere Programme, die man zur Klangmanipulation einsetzen kann, zB Debianbrutefir (mit dem habe ich einmal so etwas virtuellen Surround bzw. auch die Simulation von normalen Stereolautsprechern mit Kopfhörern verwirklicht – die Ergebnisse sind zum Teil beeindruckend: viewtopic.php?f=25&t=154019&start=15) oder Debianecasound.

Alle das lässt sich auch mit Pulseaudio nutzen, mit dem Vorteil, dass es mit Pulseaudio möglich sein sollte, die Latenz auszugleichen – also zumindest bei Quellen, bei denen das sinnvoll möglich ist, zB beim Abspielen von Videos, bei Echtzeitgeschichten wie Videotelefonie hilft das natürlich nichts.
Bei Pulseaudio gibt es obendrein zusätzlich noch Debianpulseeffects, ich glaube seit bullseye.

SPIRITUS
Beiträge: 74
Registriert: 24.11.2013 22:05:28

Re: ffmpeg superequalizer systemweit (ALSA) (oder bei chromium) anwenden?

Beitrag von SPIRITUS » 22.10.2020 12:41:43

Funktioniert Debianbrutefir oder Debianecasound in Echtzeit?

Antworten