Nimm die Danmaku als „Paket“ mit dir und schalte die Freiheit zum lästernden Kommentieren in hochauflösenden Videos frei
Anmerkung der Redaktion: Die Inhalte dieser Ausgabe sind eine Sammlung von selbst eingereichten Artikeln aus der Matrix-Community von Sspai. Die Artikel geben die persönliche Meinung der Autoren wieder, die ein direktes finanzielles Interesse an den im Text genannten Produkten haben (z. B. als Entwickler oder Eigentümer des Produkts). Sspai hat lediglich geringfügige Änderungen an Titeln und Layout vorgenommen.
Inhaltsverzeichnis dieser Ausgabe 1️⃣ DanDanPlay: Nimm die Kommentare mit 3️⃣ Tutti: Ein Ton, der überall erklingt 3️⃣ DeskBox: Dein Desktop ist endlich ordentlich organisiert
DanDanPlay
🧑💻 Belcheck | 💻 iOS / macOS / Android / PC / Web | Download-Link
Pop-up-Kommentare gehören zu den wenigen Dingen, die man an Bilibili vermisst.
Bei manchen Videos schaue ich lieber auf dem YouTube-Kanal des ursprünglichen Erstellers oder in meiner eigenen HD-Mediathek: Das Bild ist klarer, die Kompression geringer und möglicherweise ist der Inhalt vollständiger. Aber ohne die Kommentare, die gleichzeitig auf Bilibili vorbeiziehen, fehlt ein Teil des Seherlebnisses.
Manchmal bringt mich nicht das Video selbst zum Lachen, sondern die gemeinsame Wirkung von Bild und Kommentaren: eine vertraute Zeile, ein immer wieder auftauchendes Requisit, oder wenn das Publikum die Antwort schon vor dem Ersteller auf den Bildschirm schreibt, sobald dieser eine Lücke im Inhalt hinterlassen hat.
Man kann das Video an einem anderen Ort anschauen, aber dieses Gefühl des gemeinsamen Anschauens lässt sich kaum mitnehmen.
Also habe ich „Danlai Danqu“ entwickelt: Füge einen Bilibili-Videolink ein, das Tool holt nur die Kommentare ab, lädt keine Videos herunter und spielt sie nicht ab. Durch ein transparentes, immer im Vordergrund liegendes Fenster werden die Kommentare über Player wie YouTube, Infuse, IINA oder QuickTime gelegt.
Mittlerweile unterstützt es macOS und Windows und ist auf GitHub quelloffen veröffentlicht.
▍ Bildqualität und Kommentare – warum muss man sich für eines entscheiden?
Aus datentechnischer Sicht sind Video und Kommentare zwei ursprünglich unabhängige Inhaltsarten.
Das Video übernimmt Bild und Ton; für die Kommentare reichen zwei Informationen: Was soll angezeigt werden und in welcher Sekunde soll es erscheinen. Deshalb müssen Kommentare nicht unbedingt an eine bestimmte Webseite oder einen bestimmten Player gebunden sein.
Solange man ein transparentes, im Vordergrund liegendes Kommentarfenster über dem Videofenster platziert, macht es keinen wesentlichen Unterschied im Fenstermodus, ob unterhalb YouTube im Browser, die persönliche Mediathek in Infuse oder lokale Dateien in IINA oder QuickTime abgespielt werden.
Ich dachte zuerst, dieses Problem müsste schon längst gelöst sein.
Später bei der Suche fand ich heraus, dass es ähnliche Lösungen gibt: DanDanPlay unterstützt unter Windows das Überlagern von Kommentaren auf ausgewählte Player wie PotPlayer, mpv und MPC; Danmaku Anywhere kann Kommentare für Webvideos laden; IINA und mpv haben jeweils eigene Kommentar-Plugins.
Aber mein Bedarf liegt genau zwischen diesen Lösungen:
Ich möchte nicht meinen gewohnten Player wechseln, um Kommentare zu sehen;
Ich möchte nicht, dass das Tool das Video übernimmt oder neu abspielt;
Es soll sowohl Browser als auch native Anwendungen wie Infuse und QuickTime abdecken;
Da keine fertige Lösung genau diesen Schnittpunkt trifft, habe ich beschlossen, selbst eine zu entwickeln.
▍ Eine App, die nur für Kommentare zuständig ist
Der Nutzungsprozess von „Danlai Danqu“ umfasst nur vier Schritte:
Füge den Bilibili-Videolink ein, unterstützt werden BV-, av-, Teile- und b23.tv-Kurzlinks;
Hole die Kommentare zum entsprechenden Video ab;
Aktiviere die transparente Kommentarebene und platziere sie über dem Videobild;
Öffne das entsprechende Video in einem beliebigen Player und synchronisiere die Zeitachse einmal.
Es liest keine Videoinhalte und weiß nicht, was unter dem Kommentarfenster abgespielt wird. Du kannst deine Mediathek mit Infuse abspielen, lokale Dateien in IINA öffnen oder YouTube direkt im Browser anschauen. Solange beide Seiten das gleiche Video mit ungefähr übereinstimmendem Inhalt und Zeitachse sind, lassen sie sich kombinieren.
Der Vorteil dieses Designs ist seine Universalität: Ich muss keine separate Videolade-Logik für jeden Player implementieren und stoße nicht auf Probleme mit Bildqualität, Untertiteln, HDR, Tonspuren, Cloud-Protokollen oder Abspielberechtigungen.
Es macht nur Kommentare, alles andere bleibt bei dem Player, den der Nutzer bereits ausgewählt hat.
Aber diese Universalität bringt auch das lästigste Problem des gesamten Projekts mit sich.
▍ Wie weiß es, an welcher Stelle das Video abgespielt wird?
Die Antwort lautet: Es weiß es nicht.
Da „Danlai Danqu“ den Status des unterliegenden Players nicht liest, kann es nicht automatisch erkennen, ob das Video abgespielt, pausiert oder schon zu einer bestimmten Sekunde vorgespult ist.
Das ideale Erlebnis wäre natürlich automatische Synchronisation: Wenn der Player pausiert, pausieren auch die Kommentare; wenn der Player springt, springen die Kommentare mit; wenn die Abspielgeschwindigkeit geändert wird, bleiben die beiden Zeitachsen immer synchron.
Aber um dieses Erlebnis zu erreichen, müsste man Browser, Infuse, IINA, QuickTime und andere Player separat anpassen. Einige lassen sich per Skript oder Barrierefreiheitsfunktion abfragen, andere lassen sich nur indirekt erraten, und bei systemweiten Vollbildszenarien ist das Überlagern externer Fenster überhaupt nicht erlaubt.
Für ein kleines Tool, das nur den persönlichen Sehbedarf decken soll, wird das schnell zu einem nie endenden Projekt.
Am Ende habe ich mich für eine einfachere Lösung entschieden: Die Kommentare nutzen ihre eigene Zeitachse und werden einmal manuell mit dem Video synchronisiert.
Nach dem Laden der Kommentare klicke auf „Nach 5 Sekunden ab 0 synchronisieren“, in der Mitte der Kommentarebene erscheint ein Countdown. Du musst nur die Maus auf die Abspieltaste des Players legen und das Video starten, wenn der Countdown Null erreicht. Dieses Design verhindert, dass Nutzer beim Ausrichten der Fortschrittsanzeige hektisch werden.
Wenn die beiden Seiten etwas auseinanderliegen, kannst du die Tasten ±1 Sekunde, ±5 Sekunden nutzen oder direkt einen genauen Versatz eingeben, um fein abzustimmen. Bei meiner eigenen Nutzung dauert es normalerweise etwa zehn Sekunden, bis sie ausgerichtet sind, solange die beiden Versionen keine offensichtlichen Unterschiede im Vorspann oder im Schnitt haben.
Nach Abschluss der Synchronisation speichert die App die Abspielposition und den Zeitversatz dieses Videos. Wenn du es das nächste Mal aus dem Verlauf öffnest, kannst du direkt an der letzten Position weitermachen, ohne neu von vorne zu kalibrieren.
Es ist nicht so elegant wie automatische Synchronisation, aber es ist einfach genug und zuverlässig genug.
Natürlich hat diese Lösung klare Grenzen: Wenn der Vorspann der beiden Versionen unterschiedlich ist, kann das mit dem Versatz gelöst werden; wenn es Kürzungen oder Neuschnitte in der Mitte gibt, kann der hintere Teil wieder auseinanderlaufen. Universalität ist nicht kostenlos: Sie tauscht die Komplexität der „Anpassung an jeden Player“ gegen eine gelegentliche manuelle Kalibrierung durch den Nutzer ein.
▍ Ein wirklich gutes Tool sollte möglichst „unsichtbar“ werden
Die Kommentarebene liegt über dem Player, sollte aber normalerweise die Bedienung des Players nicht behindern.
Deshalb habe ich die Funktion „Mausdurchlass“ hinzugefügt: Wenn sie aktiviert ist, landen Klicks, Ziehen der Fortschrittsleiste, Wechsel zum Vollbild und andere Aktionen direkt auf dem unterliegenden Player. Wenn du Position und Größe der Kommentarebene anpassen möchtest, deaktiviere den Durchlass vorübergehend, am Rand des Fensters erscheint ein Hinweisfeld, mit dem du es direkt ziehen und skalieren kannst.
Das Hauptfenster ist auf zwei Hauptschritte reduziert: Auf der ersten Seite wählst du die Kommentarquelle aus, du kannst einen Link einfügen oder aus dem Verlauf weiter schauen; auf der zweiten Seite bleiben nur Abspielen, Pause, Fortschritt, Synchronisation und Feinabstimmung. Selten genutzte Funktionen wie Geschwindigkeitsanpassung, Bildschirm leeren, Mausdurchlass sowie Import und Export sind in ein Untermenü ausgelagert.
Beim Anschauen von Filmen wechsle ich normalerweise nicht zurück zum Hauptfenster, sondern nutze globale Tastenkürzel, um die Kommentare zu steuern:
Kommentare abspielen oder pausieren;
Vor und zurück um 1 Sekunde oder 5 Sekunden fein justieren;
Von dem aktuellen Zeitpunkt neu synchronisieren;
Kommentarebene ein- oder ausblenden.
Das scheinen nur kleine Funktionen zu sein, aber sie entscheiden direkt, ob eine App nur einmal demonstriert wird oder ob man sie beim nächsten Video wieder öffnen möchte.
▍ Von „läuft“ zu „ich möchte es dauernd nutzen“
Die früheste Version hat nur vier Dinge erledigt: Link parsen, Kommentare abholen, Kommentare rendern und Kommentare abspielen oder pausieren.
Fast alle restlichen Funktionen stammen aus Unzufriedenheit bei der tatsächlichen Nutzung.
Beim Ziehen der Fortschrittsleiste änderten sich die Zeitzahlen nicht synchron; nach Klick auf Abspielen änderte sich das Symbol der Schaltfläche nicht zu Pause; das Hauptfenster hatte zu viele Informationen; nach Aktivierung des Mausdurchlasses war es schwer, das Steuerfenster wiederzufinden; nach längerem Anschauen konnten die beiden Zeitachsen leicht abweichen.
Für sich genommen sind diese Probleme nicht schwerwiegend, aber sie entscheiden, ob ein „laufender Demo“ zu einem Tool wird, das man wirklich gerne immer wieder öffnet.
Deshalb habe ich den Abspielstatus, den Verlauf, das Speichern des Fortschritts, globale Tastenkürzel, Versatzfeinabstimmung, Speichern der Fensterposition, Anzeigebereich, Dichtesteuerung und Filterfunktionen ergänzt. Für Zeitachse und Fensterstatus wurden automatische Tests durchgeführt, um zu vermeiden, dass bei der Behebung eines Problems ein anderes Nutzungsszenario kaputtgeht.
Was Tool-Produkte am häufigsten übersehen, ist nicht die Kernfunktion selbst, sondern die Dutzenden kleinen Aktionen vor und nach der Kernfunktion.
▍ Liquid Glass von macOS und die spätere Windows-Version
Die macOS-Version wurde mit nativem AppKit entwickelt und nutzt die Liquid Glass-Oberfläche von macOS 26 Tahoe. Das Hauptsteuerfenster nutzt Karten und Schaltflächen mit Glasmaterial, im Dunkelmodus wird ein rosafarbener Akzentton gewählt – es soll wie ein Systemtool aussehen, nicht wie ein Player