php-Editor Yuzai stellt Ihnen eine Methode vor, um CRC-32 über SDT an ts zu generieren, um die Integrität der Datei zu überprüfen. CRC-32 ist ein häufig verwendeter Prüfsummenalgorithmus, der durch Berechnung der Binärdaten der Datei einen 32-Bit-Prüfwert generiert. Mit diesem Prüfwert kann überprüft werden, ob bei der Dateiübertragung oder -speicherung Fehler oder Beschädigungen aufgetreten sind. Mit dieser Methode können wir die Dateiintegrität sicherstellen und die Zuverlässigkeit der Datenübertragung verbessern.
Meine Aufgabe ist es, einen Videostream vom Server zu erfassen und an ts zu schreiben. dokumentieren. Ich habe Probleme beim Versuch, ein SDT-Paket in ts zu schreiben. Ich bilde das Paket manuell nach Bytes, weiß aber nicht, wie ich den CRC-32 der 4 Bytes am Ende des SDT berechnen soll. (mit Golang)
Ich habe versucht, den CRC basierend auf der Prüfsumme der Daten zu ermitteln, die in das SDT-Paket geschrieben wurden, aber es funktioniert nicht. Im byteweise analysierten SDT unterscheidet sich der CRC von dem, was ich berechnet habe.
Wenn Sie über MPEG-2 sprechen, ist CRC wie folgt definiert:
width=32 poly=0x04c11db7 init=0xffffffff refin=false refout=false xorout=0x00000000 check=0x0376e6e7 residue=0x00000000 name="crc-32/mpeg-2"
00 3f 86 dd 00 01 02 03 04 05 60 00 00 00 00 0d 3a 40 20 01 0d b8 30 08 19 65 00 00 00 00 00 00 00 01 20 01 0d b8 25 09 19 62 00 00 00 00 00 00 00 02 80 00 9d 8c 06 38 00 04 00 00 00 00 00 7c 17 17 63
Wobei die letzten vier Bytes der crc-32/mpeg-2 (in Big-Endian-Reihenfolge) aller vorangehenden Bytes sind.
Hier ist ein C-Codebeispiel zur Berechnung von crc:
#include <stddef.h> #include <stdint.h> uint32_t crc32mpeg2(uint32_t crc, void const *mem, size_t len) { unsigned char const *data = mem; if (data == NULL) return 0xffffffff; for (size_t i = 0; i < len; i++) { crc ^= (uint32_t)data[i] << 24; for (unsigned k = 0; k < 8; k++) { crc = crc & 0x80000000 ? (crc << 1) ^ 0x4c11db7 : crc << 1; } } return crc; }
(Wenn mem
等于null
, wird der anfängliche CRC-Wert zurückgegeben.)
Das obige ist der detaillierte Inhalt vonGenerieren Sie CRC-32 für SDT zu ts. dokumentieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!