l'éditeur php Yuzai vous présentera une méthode pour générer CRC-32 via SDT vers ts pour vérifier l'intégrité du fichier. CRC-32 est un algorithme de somme de contrôle couramment utilisé qui génère une valeur de contrôle de 32 bits en calculant les données binaires du fichier. Cette valeur de contrôle peut être utilisée pour vérifier si des erreurs ou une corruption se sont produites lors du transfert ou du stockage de fichiers. Grâce à cette méthode, nous pouvons garantir l’intégrité des fichiers et améliorer la fiabilité du transfert de données.
Ma tâche est de capturer le flux vidéo du serveur et de l'écrire sur ts. document. J'ai du mal à essayer d'écrire un package SDT sur ts. Je forme manuellement le paquet par octets mais je ne sais pas comment calculer le CRC-32 des 4 octets à la fin du SDT. (en utilisant Golang)
J'ai essayé d'obtenir le CRC basé sur la somme de contrôle des données qui ont été écrites dans le paquet SDT, mais cela ne fonctionne pas. Dans le SDT analysé octet par octet, le CRC est différent de ce que j'ai calculé.
Si vous parlez de mpeg-2, crc est défini comme :
width=32 poly=0x04c11db7 init=0xffffffff refin=false refout=false xorout=0x00000000 check=0x0376e6e7 residue=0x00000000 name="crc-32/mpeg-2"
rfc 4326 :
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
Où les quatre derniers octets sont le crc-32/mpeg-2 (dans l'ordre big-endian) de tous les octets qui le précèdent.
Voici un exemple de code C pour calculer le 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; }
(Quand mem
等于null
, renvoie la valeur crc initiale.)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!