php Xiaobian Yuzai will introduce a method to generate CRC-32 through SDT to ts to verify the integrity of the file. CRC-32 is a commonly used checksum algorithm that generates a 32-bit check value by calculating the binary data of the file. This check value can be used to verify whether errors or corruption occurred during file transfer or storage. Using this method, we can ensure file integrity and improve data transfer reliability.
Question content
My task is to capture the video stream from the server and write it to ts. document. I'm having trouble trying to write an SDT package to ts. I manually form the packet by bytes but don't know how to calculate the CRC-32 of the 4 bytes at the end of the SDT. (using golang)
I tried to get the CRC based on the checksum of the data that has been written to the SDT packet, but it doesn't work. In the SDT parsed byte by byte, the CRC is different from what I calculated.
Workaround
If you are talking about mpeg-2, the crc is defined as:
width=32 poly=0x04c11db7 init=0xffffffff refin=false refout=false xorout=0x00000000 check=0x0376e6e7 residue=0x00000000 name="crc-32/mpeg-2"There is an example in
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
Where the last four bytes are the crc-32/mpeg-2 (in big-endian order) of all the bytes preceding it.
The following is a c code example to calculate 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; }
(When mem
is equal to null
, the initial crc value is returned.)
The above is the detailed content of Generate CRC-32 for SDT to ts. document. For more information, please follow other related articles on the PHP Chinese website!

Effective Go application error logging requires balancing details and performance. 1) Using standard log packages is simple but lacks context. 2) logrus provides structured logs and custom fields. 3) Zap combines performance and structured logs, but requires more settings. A complete error logging system should include error enrichment, log level, centralized logging, performance considerations, and error handling modes.

EmptyinterfacesinGoareinterfaceswithnomethods,representinganyvalue,andshouldbeusedwhenhandlingunknowndatatypes.1)Theyofferflexibilityforgenericdataprocessing,asseeninthefmtpackage.2)Usethemcautiouslyduetopotentiallossoftypesafetyandperformanceissues,

Go'sconcurrencymodelisuniqueduetoitsuseofgoroutinesandchannels,offeringalightweightandefficientapproachcomparedtothread-basedmodelsinlanguageslikeJava,Python,andRust.1)Go'sgoroutinesaremanagedbytheruntime,allowingthousandstorunconcurrentlywithminimal

Go'sconcurrencymodelusesgoroutinesandchannelstomanageconcurrentprogrammingeffectively.1)Goroutinesarelightweightthreadsthatalloweasyparallelizationoftasks,enhancingperformance.2)Channelsfacilitatesafedataexchangebetweengoroutines,crucialforsynchroniz

InterfacesandpolymorphisminGoenhancecodereusabilityandmaintainability.1)Defineinterfacesattherightabstractionlevel.2)Useinterfacesfordependencyinjection.3)Profilecodetomanageperformanceimpacts.

TheinitfunctioninGorunsautomaticallybeforethemainfunctiontoinitializepackagesandsetuptheenvironment.It'susefulforsettingupglobalvariables,resources,andperformingone-timesetuptasksacrossanypackage.Here'showitworks:1)Itcanbeusedinanypackage,notjusttheo

Interface combinations build complex abstractions in Go programming by breaking down functions into small, focused interfaces. 1) Define Reader, Writer and Closer interfaces. 2) Create complex types such as File and NetworkStream by combining these interfaces. 3) Use ProcessData function to show how to handle these combined interfaces. This approach enhances code flexibility, testability, and reusability, but care should be taken to avoid excessive fragmentation and combinatorial complexity.

InitfunctionsinGoareautomaticallycalledbeforethemainfunctionandareusefulforsetupbutcomewithchallenges.1)Executionorder:Multipleinitfunctionsrunindefinitionorder,whichcancauseissuesiftheydependoneachother.2)Testing:Initfunctionsmayinterferewithtests,b


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Dreamweaver CS6
Visual web development tools

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

Atom editor mac version download
The most popular open source editor

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.
