Lesezeit
6 min

Open Sourcing unserer Videometriken

Das Problem

Auf Videoplattformen wie YouTube und Vimeo ist die Möglichkeit, Aufrufe zu zählen, unerlässlich. Mit dieser Funktion können Ersteller ihre Inhalte an die Abbruchraten der Zuschauer anpassen. Es dient auch dazu, die Qualität der produzierten Inhalte zu authentifizieren, indem es effektiv sagt: „Angesichts der hohen Zuschauerzahl muss es sich um qualitativ hochwertige Inhalte handeln.“

Viele YouTuber entscheiden sich jedoch dafür, ihre eigenen Inhalte außerhalb traditioneller Videoplattformen zu hosten, indem sie einfach eine MP4-Datei hochladen und einen <video>-Tag auf ihrer Website integrieren. Dies wirft jedoch die Frage auf: Wie können sie den Erfolg ihres Videos messen, wenn es nur ein Video-Tag ist? Es wird schwierig festzustellen, ob die Zuschauer den Inhalt tatsächlich ansehen oder nur auf der Website surfen. Kommt es zu Verzögerungen? Brechen sie das Video aufgrund von Pufferungsproblemen innerhalb von Sekunden ab?

Die Lösung

Natürlich stellen wir unser eigenes gehostetes Produkt zur Verfügung, das Ihnen dabei hilft, und wir hoffen, viele dieser Probleme sofort lösen zu können. Aber wir sind nicht hier, um Ihnen unser Produkt zu verkaufen (ok, vielleicht ein bisschen). Wir sind hier, um Ihnen zu sagen, dass Sie Videos ernst nehmen sollten. Und ja, wir treiben auch unsere eigene Agenda voran: weil wir glauben, dass das Zählen von Aufrufen auf datenschutzfreundliche Weise erfolgen muss.

Ähnlich wie Plausible oder Simple Analytics den Weg für datenschutzfreundliche Website-Analysen geebnet haben, haben wir Mave Metrics entwickelt, um dasselbe zu tun, außer für Videos. Es geht uns nicht darum, Personen zu verfolgen, wir wollen Aufrufe verfolgen. Und wir wollen es auf eine Weise tun, die einfach zu implementieren und zu nutzen ist. Kommen wir also zur technischen Seite.


Erste Schritte


Metrikserver
maveio/metrics-server eingeschaltet GitHub

Das Projekt verfügt über eine Server- und Clientbibliothek. Der Server ist in Elixir geschrieben und lässt sich einfach über Docker ausführen. Die Daten werden in PostgreSQL gespeichert und TimescaleDB wird für Zeitreihendaten verwendet, um sicherzustellen, dass wir schöne Abfragen durchführen können. Um zu beginnen, führen Sie einfach Folgendes aus:

docker compose up metrics

Nach der Ausführung können Sie die Javascript-Bibliothek @maveio/metrics mit NPM in Ihr Projekt importieren und mit der Verfolgung von Ansichten beginnen. Es ist so einfach wie:

npm install @maveio/metrics
import { Metrics } from "@maveio/metrics";

const video = new Metrics("#my_video", "MIB2", {
  my_video_id: 1234,
});

video.monitor();

Metrik-JavaScript-Bibliothek
maveio/metrics an GitHub

Das Einzige, was erwartet wird, ist, dass ein <video>-Element mit der ID #my_video im DOM vorhanden ist. Das zweite Argument ist eine ID, die Sie dem Videometrikelement als Referenz geben können, und das dritte sind benutzerdefinierte Metadaten, die Sie optional mitsenden und später abfragen können. Dies ist hilfreich, wenn Sie mehrere Videoelemente zu Analysezwecken gruppieren möchten.

Wenn Sie HLS.js verwenden, können Sie dem Konstruktor auch das HLS-Videoobjekt bereitstellen. Mehr dazu finden Sie in der Readme-Datei des Projekts.

Unter der Haube nutzt es die großartige Socket-Implementierung von Phoenix, um alle Ereignisse aus dem Video zu sammeln (auf hochgradig skalierbare Weise). Es hat keinen Einfluss auf die Videoleistung und ist sehr leicht.

Architekturdiagramm des Metriksystems, das zeigt, wie Phoenix-Sockets Videoereignisse sammeln und in TimescaleDB.
↳ Architekturdiagramm des Metriksystems, das zeigt, wie Phoenix-Sockets Videoereignisse sammeln und in TimescaleDB.
speichern

Fazit: Wir hoffen, dass die Einrichtung wirklich einfach ist (vor allem, wenn Sie mit Elixir vertraut sind) und dass IP-Adressen, Cookies und Fingerabdrücke keinen Nutzen haben. Nur eine einfache Möglichkeit, Videoaufrufe zu verfolgen.

Das Ergebnis

Ab sofort können Sie drei Arten von Metriken zurückerhalten. Es gibt keine Schnittstelle, nur eine API, mit der Sie kommunizieren können. Alle Metriken können mit identifier oder metadata abgefragt werden. Das bedeutet, dass Sie entweder „MIB2“ oder die von Ihnen bereitgestellten benutzerdefinierten Metadaten verwenden können, um die Daten abzufragen, wie zum Beispiel:

curl --location --request GET 'localhost:3000/api/v1/views' \
--data '{
    "query": {
        "video": {
            "my_video_id": 1234
        }
    },
    "timeframe": "30 days",
    "interval": "1 day"
}'

Da TimescaleDB unter der Haube verwendet wird, können wir die Idee von Zeitfenstern nutzen. Mit der API können Sie also einen interval und einen timeframe verwenden. Dadurch werden die Daten in Buckets des angegebenen Intervalls für den angegebenen Zeitraum zurückgegeben. Sie können beispielsweise die Anzahl der Aufrufe pro Tag aus den letzten 30 Tagen abrufen.

{
    "views": [
        {
            "browser": {
                "chrome": 73,
                "safari": 52,
                ...
            },
            "device_type": {
                "desktop": 94,
                "mobile": 43,
                ...
            },
            "interval": "2023-06-14T00:00:00.000000",
            "platform": {
                "ios": 21,
                "mac": 54,
                "windows": 11,
                ...
            },
            "total_view_time": 204.267,
            "views": 174
        },
        ...
    ]
}

Spielt

Wiedergaben werden pro Sitzung aufgezeichnet, was bedeutet, dass sie pro Seitenaufruf eindeutig sind. Das heißt, wenn eine Person ein Video innerhalb derselben Sitzung zweimal ansieht, zählt es nur als eines. Aber wenn diese Person die Seite aktualisiert und erneut ansieht, zählt es als zwei. Das Einzige, was die Ansicht bestimmt, ist der erforderliche minimum_watch_seconds. Das bedeutet: Wenn Sie ein Video mit einer Länge von 30 Sekunden haben, zählt ein Aufruf nur, wenn die Mindestwiedergabezeit beispielsweise 5 Sekunden beträgt.

Neben der Anzahl der Aufrufe erhalten Sie auch Informationen zu Browser, Gerät und Plattformtyp. Und Sie erhalten die Gesamtzahl der angesehenen Sekunden zurück, die Sie zur Berechnung von Durchschnittswerten oder anderen interessanten Dingen verwenden können.

Engagement

Engagement ist etwas komplexer, aber hilfreich zu wissen, welche Teile Ihres Videos angesehen wurden. Sie können eine Heatmap erstellen, die zeigt, welche Teile des Videos häufiger angesehen wurden als andere.

Engagement-Heatmap, die zeigt, welche Sekunden eines Videos am häufigsten angesehen wurden, mit Zuschauerrückgang im Laufe der Zeit.
↳ Engagement-Heatmap, die zeigt, welche Sekunden eines Videos am häufigsten angesehen wurden, mit Zuschauerrückgang im Laufe der Zeit.

Es ist ziemlich ähnlich wie bei Ansichten, aber anstatt einen interval als Bucket bereitzustellen, müssen Sie die gewünschte Menge an ranges angeben. Dadurch wird die Anzahl der Aufrufe pro Bereich zurückgegeben, anhand derer Sie sehen können, ob die Leute an einem bestimmten Punkt absteigen.

Auf diese Weise wissen Sie beispielsweise, dass Sie von Sekunde 0 bis Sekunde 3 die meisten Zuschauer hatten, die Leute dann aber in den Sekunden danach langsam aufhörten zu schauen.

Quellen

Quellen sind etwas seltsam, aber es ist hilfreich zu wissen, wo Ihr Video angesehen wird. Dies ist hilfreich, wenn Sie Ihr Video auf mehreren Websites einbetten und wissen möchten, welche die beste Leistung erbringt.

Warum Open Source?

Wir sind Entwickler und nutzen täglich Open-Source-Projekte. Aber es geht nicht nur darum, etwas zurückzugeben. Unser Hauptziel ist es, Ihnen qualitativ hochwertige Videos anzubieten, die außergewöhnlich gut funktionieren und Ihnen die Möglichkeit geben, wirklich einzigartige und beeindruckende Erlebnisse zu schaffen. Datenschutz ist uns ein großes Anliegen und wir glauben fest daran, dass Sie die vollständige Kontrolle über Ihre Daten haben sollten.

Durch die offene Beschaffung unserer Produkte ist es unser Ziel, völlig transparent und verantwortungsvoll zu sein. Wir möchten Ihnen zeigen, dass wir kein Interesse daran haben, Sie oder Ihre Besucher auszuspionieren. Unser Fokus liegt auf der Verfolgung von Aufrufen, da wir der Meinung sind, dass es für Sie wichtig ist, die Wirkung Ihrer Videos zu messen.

Und wenn Sie Ihre eigene Website mit Videos betreiben (und mave.io nicht verwenden), möchten wir Ihnen mehr Einblick in Ihr Video geben, um es zu verbessern und zu verbessern (und uns schließlich natürlich für den Wechsel zu mave entscheiden).

Was nun

Es ist ein laufendes Projekt, aber wir verwenden es in der Produktion bei mave.io. Wir denken auch über eine gehostete (Standalone-)Version nach, damit Sie sie nicht selbst ausführen müssen.

Wir suchen Entwickler, Befürworter des Datenschutzes und die breitere Community, die zum Projekt beitragen und eine kontinuierliche Verbesserung und Angleichung an Datenschutzgrundsätze sicherstellen.

Wenn Sie etwas beitragen möchten, freuen wir uns über Pull Requests und helfen Ihnen gern beim Einstieg. Kontaktieren Sie uns einfach auf Discord oder erstellen Sie ein Issue auf GitHub.

Viel Spaß beim Codieren und Verfolgen von Aufrufen!

Veröffentlicht am 28. Juni 2023
kompatibel mit
Entwickler?
Unsere Dokumentation führt Sie Schritt für Schritt durch die Videoeinbettung – vom einfachen Einstieg bis zu individuellen Konfigurationen. Sie erklärt verschiedene Hosting-Optionen einschließlich unseres Standard-CDN und die Integration in gängige Web-Frameworks.
script
react
vue
1
2
3
4
5
🍪 Klicken Sie auf „Akzeptieren“, um zu bestätigen, dass Sie damit einverstanden sind, dass wir keine Cookies verwenden. Ja, dieses Banner ist nur zur Ansicht da!
Akzeptieren