Überprüfen Sie, ob das Youtube-Video ein statisches Bild ist

8

Wie kann festgestellt werden, ob ein Youtube-Video ein tatsächliches Video oder nur ein statisches Bild ist?

Da es mit der youtube-API wahrscheinlich nicht möglich ist, gibt es eine Problemumgehung, bei der javascript / jquery verwendet wird, um Pixel in einem bestimmten Bereich des Fensters zu scannen und festzustellen, ob sie sich geändert haben?

    
mrabin 10.12.2012, 20:01
quelle

4 Antworten

9

Diese grobe Idee basiert auf der Antwort von Stihoza , ist aber viel einfacher.

Verwenden Sie nur Thumbnails

  

Sie können Video-Miniaturbilder Ссылка erhalten. Zum   Wenn zum Beispiel Video ID 500Pm4mQZQQ (statisches Bildvideo) ist, werden Sie   habe diese Thumbnails:

%Vor%

Wenn diese Bilder sehr ähnlich sind, ist das Video statisch (sie sind wegen Kompressionsrauschen nicht exakt identisch). Um die drei verfügbaren Standbilder auf einfache Weise zu vergleichen, müssen Sie keine aktuellen Bildvergleichsalgorithmen anwenden. Vergleichen Sie einfach ihre Dateigrößen.

Die Idee: JPEG-Größen vergleichen

Dies sind JPEG-Bilder. Ihre Dateigröße variiert, abhängig davon, wie gut das Bild komprimiert werden kann. Ähnliche Bilder ergeben ähnliche Dateigrößen.

Die obigen Beispiele haben 3534, 3539 und 3539 Bytes. Wenn ich ein zufälliges nicht-statisches Video überprüfe, bekomme ich viel größere Unterschiede: 4179, 4726 und 4779 Bytes. Sehr ähnliche Dateigrößen = statisches Video.

Fangen Sie an

Die Byte-Größe eines Bildes ist mit Javascript nicht (einfach) möglich. Aber es sollte bei jeder serverseitigen Technik trivial sein. Hier ist ein einfacher Weg mit PHP :

%Vor%

Bearbeiten:

Testimplementierung in PHP:

%Vor%

Testergebnis:

Ich habe drei "normale" Videos und drei komplett statische Videos verwendet, deren URLs im Code enthalten sind. Ich führe das Skript in der Befehlszeile aus:

%Vor%

In dieser (zugegebenermaßen kleinen) Probe ist es tatsächlich möglich, die normalen (ersten drei) von den statischen (die letzten drei) zu unterscheiden.

Ein großes Problem werden Videos sein, die aus mehreren Standbildern (Slideshow) gemacht werden, was bei Musik-Uploads recht üblich ist.

    
pixelistik 14.02.2013, 00:46
quelle
5

Es gibt keinen offiziellen Weg zu bestimmen, ob das Video ein statisches Bild ist, aber kannst du trotzdem ein paar Tricks machen.

Sie können Video-Thumbnails http://i.ytimg.com/vi/VIDEO_ID/X.jpg erhalten. Wenn die Video-ID beispielsweise 500Pm4mQZQQ (statisches Bildvideo) ist, haben Sie folgende Thumbnails:

Jetzt können Sie Bibliotheken für die Ähnlichkeit der Bilder verwenden, um die Ähnlichkeit der Miniaturansichten zu bestimmen. Beispielsweise können Sie diesen JavaScript-Algorithmus js-image-similarity verwenden: Ссылка

Hinweis: Diese JS-Bibliothek soll nur im neuesten WebKit funktionieren. Unterstützung für Canvas und Array.forEach ist erforderlich.

Sie können auch PHP verwenden. Lesen Sie mehr über den Algorithmus hier und überprüfen Sie auch diese PHP-Klasse: Ссылка

    
Stichoza 13.02.2013 14:41
quelle
2

Nein, tut mir leid. Es gibt keine Unterstützung in den YouTube-APIs zum Abrufen von Informationen über den wiedergegebenen Audio- oder visuellen Inhalt.

    
Jeff Posnick 10.12.2012 22:44
quelle
1

Dies wird von der YouTube-API nicht unterstützt, sollte aber für HTML5-Videos möglich sein. Verwenden von HTML5 Sie können ein einzelnes Bild so kopieren, als wäre es ein Bild. Als nächstes ist es möglich, einzelne Pixel zu manipulieren.

Der folgende Code ruft Pixeldaten von einem einzelnen Frame ( video ) ab:

%Vor%
Mike 13.02.2013 14:29
quelle