Wie ist es möglich, YouTube und Vimeo so schnell zu transcodieren?

Für den Teil, den ich lese, verlassen sich YouTube und Vimeo auf Server, die von einigen modifizierten Bibliotheken betrieben werden, wie ich denke, wie libavcodec und Tools wie ffmpeg in einem ernsthaften benutzerdefinierten Build.

Nehmen wir an, eine Transcodierung nach h264, aber das Gleiche könnte auf andere Codecs angewendet werden, ich denke, VP8 und VP9 funktionieren auf die gleiche Weise.

Wenn ich eine 1-stündige Videodatei auf ihre Server hochlade, habe ich direkt nach dem Hochladen alle Versionen bereit ... praktisch 1 Sekunde danach.

Aber wenn Codecs horizontal nicht gut skalieren, es sei denn, Sie möchten Zeit gegen Komprimierung tauschen (siehe h264), und ich bin mir ziemlich sicher, dass sich diese Websites um die Größe der Videos kümmern.

Angesichts der Tatsache, dass die Geschwindigkeit einzelner Threads durch die CPU-Frequenz begrenzt ist und die tatsächliche Frequenz im Allgemeinen nicht bis zu 3,5 GHz beträgt, es sei denn, sie verwenden übertaktete Server unter flüssigem Stickstoff: D

Wie geht die Transkodierung so schnell?

Sie verwenden immer noch Multithread mit einer Mischung aus Einstellungen, Handel mit anfänglicher Dateigröße, benutzerdefinierten Builds und allem anderen, um nur die Dateien für den Benutzer sofort bereit zu haben, und fahren dann mit einer zweiten Transcodierung mit einer langsamen Voreinstellung fort, die ausgetauscht wird, sobald diese Datei wird bereit sein? Sie beginnen mit der Transcodierung, sobald sie den Dateistream erhalten (auch bekannt als: während des Uploads?)

"praktisch wie 1 Sekunde danach" --> das ist nicht meine Erfahrung. Es ist schnell, aber nicht so schnell für mich, und die HD-Versionen brauchen etwas länger. Siehe support.google.com/youtube/answer/71674?hl=de und greenlimepie.com/…

Antworten (2)

Eine gängige Methode ist Split-and-Stitch, bei der die Datei in Stücke geschnitten und zur Transcodierung an mehrere Server gesendet wird. Auf diese Weise können Sie eine Datei beliebiger Länge in einer festgelegten Zeit transcodieren.

Telestreams Episode Engine kann dies tun, aber ich bin sicher, dass Google etwas benutzerdefiniertes Codieren verwendet.

Toller Artikel, @Mulvya. Das ganze Internet sollte die editFunktion von Stack Exchange haben, der Text dort drüben muss dringend überarbeitet werden :)

Ich könnte mir vorstellen, dass sie auch hardwareunterstütztes Transcoding verwenden. Ein Unternehmen wie Google hat sicherlich die Ressourcen, um benutzerdefinierte FPGA-Transcoder herzustellen, und dann wird die Transcodierungsgeschwindigkeit blitzschnell.

Das könnte auch eine Option sein, ja. Zum Beispiel denke ich, dass die v8- und v9-Codecs so konzipiert wurden, dass sie optimal mit ihrer Hardware skalieren, aber in Bezug auf x264 denke ich, dass die beste Wahl darin besteht, wie ein Chef zu schneiden, jedes Slice einem anderen Thread zuzuweisen und die Teile am Ende wieder zusammenzufügen .
Ein bisschen Einblick in YouTube-Interna, obwohl ziemlich veraltet: multimedia.cx/eggs/googles-youtube-uses-ffmpeg