Bitte erklären Sie die Codecs in meinem Beispiel [geschlossen]

Kann jemand erklären, was in meinem Projekt passiert? Bitte verwenden Sie so viele Details wie möglich, ich möchte nur lernen, danke.

Ich habe einen Apache-Webserver. Es enthält viele Videos (.mp4 .mkv, die "Container" sind). Außerdem habe ich ASX-Dateien, die auf ihre jeweiligen Videos verweisen. Ich möchte, dass Benutzer die Videos streamen (auf VLC oder Windows Media Player), aber im Moment ist es sehr langsam. Ich denke, ein besseres Verständnis von Codecs wird helfen.

  • Codecs komprimieren und dekomprimieren also Videos, richtig?
  • Die Dekomprimierung erfolgt clientseitig im Mediaplayer. Aber wo findet die Komprimierung statt?
  • Ist es auch im Mediaplayer?
  • Oder kann es in der ASX-Datei angegeben werden?
  • Oder wählt die Videodatei aus, welchen Codec sie zum Komprimieren und Dekomprimieren verwendet.
  • Kann ich auswählen, welcher Codec verwendet werden soll?
  • Ich weiß, dass es für bestimmte Situationen bessere Codecs gibt als für andere. Kann das jemand erklären?
  • Ich habe ein paar meiner Videos gesehen, in denen LAV zum Dekomprimieren verwendet wurde, während einige H264 / 5 verwenden (ich kann mich nicht erinnern, welches).
  • Was die Streaming-Seite betrifft, gibt es eine Möglichkeit zu sagen: Wenn die Netzwerkgeschwindigkeit langsam ist, ändern Sie das Video von 1080p auf 480p?
  • Gibt es bestimmte Einstellungen, die ich in einem meiner Mediaplayer beachten sollte, um beim Puffern, Streamen, Codecs usw. zu helfen?
  • Ich habe gerade in den Tags unten gesehen, dass es einen Codec und eine Transcodierung gibt. Ist da ein Unterschied? Gibt ein Codec an, wie die Transcodierung erfolgt? Mir ist klar, dass dies viele Fragen sind, aber wenn jemand Antworten auf eine davon hat, lassen Sie es mich bitte wissen. Auch hier versuche ich nur zu lernen

BEARBEITEN Wenn ich Änderungen am Mediaplayer vornehmen muss, wäre es dann besser, einen Mediaplayer in meinen Webserver einzubetten? Und Ideen, wie man das angeht/wo man anfängt?

Bitte teilen Sie dies in separate Fragen auf. So wie es ist, ist dies viel zu weit gefasst, um Ihnen eine effektive Antwort zu geben.
Wie wäre es mit: Was passiert in meinem Beispiel? Wo führt der Codec eigentlich die Komprimierung und Dekomprimierung durch?

Antworten (1)

Codecs komprimieren und dekomprimieren also Videos, richtig?

KOMprimieren DEKomprimieren. Ja. Genau wie bei der Textcodierung, z. B. ASCII oder Unicode, aber bei Video nehmen Sie ein Raster (Pixelgitter) und verwandeln es in einen Datenstrom. Oftmals besteht das Ziel darin, die Größe der Daten so klein wie möglich zu halten, manchmal aber auch sicherzustellen, dass die Pixel, die beim Lesen der Datei rekonstruiert werden, genau die gleichen sind wie die Pixel, die hineingegangen sind, oder eine Kombination aus beidem .

Die Dekomprimierung erfolgt clientseitig im Mediaplayer. Aber wo findet die Komprimierung statt? Ist es auch im Mediaplayer? Oder kann es in der ASX-Datei angegeben werden? Oder wählt die Videodatei aus, welchen Codec sie zum Komprimieren und Dekomprimieren verwendet.

Die Dekomprimierung erfolgt im Client, sei es der Browser oder ein Mediaplayer oder ein Plugin. Die Komprimierung erfolgt einmal, wenn Sie das Video komprimieren, dh wenn Sie die MP4-, MKV-Dateien usw. erstellen.

Die unterschiedlichen Dateitypen sind in der Tat unterschiedliche Container, und Container können Streams enthalten, die in unterschiedlichen Codecs codiert sind. Nimm eine mp4-Datei. Das Video wird normalerweise in h.264 kodiert, während das Audio wahrscheinlich aac ist, und es könnte einen Untertitel-Stream geben, der als movtext kodiert ist. Häufig können Containerformate viele verschiedene Codecs aufnehmen. Der Quicktime-Container (mov) ist mit Dutzenden von Codecs kompatibel, ebenso wie mkv.

Sobald eine Datei mit einem bestimmten Codec komprimiert wurde, benötigen Sie etwas, das diesen Codec lesen kann, um sie abzuspielen. Die Details zum Codec sowie die Parameter, die dem Player mitteilen, wie er decodiert werden soll, befinden sich im Container. Der Spieler muss also auch wissen, wie man den Container liest.

Die .asx-Datei zeigt nur auf den Stream, es liegt am Player, ihn zu dekodieren.

Kann ich auswählen, welcher Codec verwendet werden soll? Ich weiß, dass es für bestimmte Situationen bessere Codecs gibt als für andere. Kann das jemand erklären?

Ja, verschiedene Codecs sind für verschiedene Dinge nützlich. Wenn Sie Videos streamen, möchten Sie eine gute Qualität, aber für die kleinstmöglichen Bitraten. Oft bedeutet dies, eine verlustbehaftete Komprimierung zu verwenden – eine, bei der das komprimierte Video im Vergleich zum unkomprimierten Original an Qualität verloren hat. Der Trick besteht darin, die Qualität so zu verlieren, dass sie für Menschen weniger offensichtlich ist. h.264 ist wahrscheinlich das richtige Werkzeug für den Job, es sei denn, die Patentbeschränkungen oder Lizenzkosten sind ein Problem.

Wenn ich jedoch eine Zwischendatei in meiner Postproduktionskette rendere, möchte ich eine hohe Bittiefe und verlustfreie oder minimal verlustbehaftete Qualität. Ich könnte mich für verlustfreies 12-Bit 4:4:4 entscheiden oder einen Kompromiss eingehen und einen Codec wie cineform oder proRes verwenden, abhängig von meinem Betriebssystem. Während sie Qualität und Dynamikbereich beibehalten, wären sie schreckliche Codecs für das Streaming, verlustfreies 12-Bit-4:4:4:4 hat eine Datenrate von ~2500 MB/s. Andere Codecs sind ein Kompromiss zwischen Dateigröße und Qualität, andere funktionieren wirklich gut bei extrem niedrigen Bitraten oder benötigen weniger CPU, andere sind gut, weil sie nicht durch Patente oder Lizenzen belastet sind.

Ich habe ein paar meiner Videos gesehen, in denen LAV zum Dekomprimieren verwendet wurde, während einige H264 / 5 verwenden (ich kann mich nicht erinnern, welches).

LAV ist eine Softwarebibliothek, die von Komprimierungs- und Dekomprimierungssoftware verwendet wird. Es kann viele Codecs lesen und schreiben. H.264/5 sind Codecs.

Was die Streaming-Seite betrifft, gibt es eine Möglichkeit zu sagen: Wenn die Netzwerkgeschwindigkeit langsam ist, ändern Sie das Video von 1080p auf 480p?

Ja, ich denke schon - YouTube macht es, aber außerhalb meines Fachgebiets und wahrscheinlich eine bessere Frage für Superuser.

Gibt es bestimmte Einstellungen, die ich in einem meiner Mediaplayer beachten sollte, um beim Puffern, Streamen, Codecs usw. zu helfen?

Nicht wirklich, es ist die Komprimierungsseite der Dinge, die Sie optimieren möchten. Sie müssen sich der Fähigkeiten Ihres Clients bewusst sein und unter Berücksichtigung dessen codieren.

Ich habe gerade in den Tags unten gesehen, dass es einen Codec und eine Transcodierung gibt. Ist da ein Unterschied? Gibt ein Codec an, wie die Transcodierung erfolgt? Mir ist klar, dass dies viele Fragen sind, aber wenn jemand Antworten auf eine davon hat, lassen Sie es mich bitte wissen. Auch hier versuche ich nur zu lernen

Beim Transcoding wird von einem Codec in einen anderen konvertiert. Also sagen wir, ich habe einen meiner verlustfreien 12-Bit-Codecs gemastert. Ich habe jetzt eine Videodatei, die Hunderte von Gigs umfasst. Ich möchte vielleicht eine Kopie für das Internet machen, also starte ich meine Transcoding-App und sage ihr, dass sie den Master nehmen und in eine mp4-Datei komprimieren soll, die nur einen Bruchteil des Speicherplatzes beansprucht.

Wenn ich dieselbe Datei von meinem Arbeitscomputer und meinem Heimcomputer streame, ist das Streaming anders; einer streamt mit mehr Verzögerung als der andere. Hat dies damit zu tun, welche Methode zum Dekomprimieren verwendet wird, oder hat es mit der Verbindungsbandbreite zu tun
Es ist möglich, dass sich CPU, GPU und RAM auf die Wiedergabeleistung auswirken, aber wahrscheinlicher ist es, wie Sie vermutet haben, die Bandbreite.