4 ms·
I don't get how it works. > Encoding: Files are chunked, encoded with fountain codes, and embedded into video frames Wouldn't YouTube just compress/re-encode
by thrdbndndn 8mo ago
I don't get how it works.
> Encoding: Files are chunked, encoded with fountain codes, and embedded into video frames
Wouldn't YouTube just compress/re-encode your video and ruin your data (assuming you want bit-by-bit accurate recovery)?
If you have some redundancy to counter this, wouldn't it be super inefficient?
(Admittedly, I've never heard of "fountain codes", which is probably crucial to understanding how it works.)
- Jaxan 8mo agoYes it is inefficient. But youtube pays the storage ;-). (There is probably a limit on free accounts, and it is probably not allowed by the TOS.)
- genidoi 8mo agoRight, you just pay daily in worrying when, not if, youtube will terminate your account and delete your "videos".
- sdenton4 8mo agoYeah, I would assume that transcodes kill this eventually...
- brandonli28 8mo agoHey there, Brandon here (developer). I've uploaded an explanation video here, which might be useful to watch :D https://youtu.be/l03Os5uwWmk?si=nJDwz4s7_E4WFOwC https://youtu.be/l03Os5uwWmk?si=nJDwz4s7_E4WFOwC
- grishka 8mo agoHe encodes bits as signs of DCT coefficients. I do feel like this is not as optimal as it could be. A better approach IMO would be to just ignore the AC coefficients altogether and instead encode several bits per block into the DC. Not using the chrominance also feels like a waste.
- brandonli28 8mo agoThis actually won't work against YouTube's compression. The DC coefficient is always quantized, rounded, scale, and any other things. That means that these bits are pretty much guaranteed to be destroyed immediately. If this is the case for every single block, then data is unrecoverable. Also, chrominance is not used on purpose, because chrominance is compressed much more aggressively compared to luminance.
- grishka 8mo agoI meant choosing multiple values, e.g. 4 to represent 2 bits. Say, 0.25, 0.5, 0.75, and 1. Then when decoding you would pick the closest valid value, so for example for 0.20 it would be 0.25. Not using AC coefficients would mean that theoretically you would get more bitrate for the DC ones.
- brandonli28 8mo agoI’ve been told this many times in the comments, but this again is not reliable. Simply put, compression doesn’t necessarily follow a pattern, so specifying “ranges” or rounding to a specific place will not work. Compression optimizes for the eye, and doesn’t do the same thing for every value. It will round some down, some other mores, others less. Giving a range is simply not enough.