Daily Tech Briefing
AI 科技速览

每天 5 分钟内学习 AI。获取最新的人工智能新闻,理解其重要性,并学习如何将其应用于您的工作。

AI 快讯
Hacker News · 2026/8/2 14:29:01

Video2NAND – Abusing video codecs for great computational power

AI 中文解读
Video2NAND这个项目脑洞大开:居然想用视频压缩技术来当计算机用!它把VP8视频解码器里的预测机制改造成逻辑门,像搭积木一样拼出任意电路。通俗点说,视频压缩本来是通过相邻画面“猜”像素来省空间,科学家却把这套“猜”的规则变成了计算开关,让解码器既能放视频又能做运算。目前这还属于极客的实验,短期内不会改变普通人的生活,但它展示了一种另类计算思路:任何能处理0和1的系统都可能变成计算机,哪怕只是个视频播放器。长远看,这种逆向思维可能启发更节能的专用芯片,或让旧的视频硬件焕发新用途,但离实际应用还很遥远。对普通人来说,这更像一则有趣的科技花边新闻,提醒我们技术边界往往比想象中更模糊。
Shared Object Video2NAND July 11, 2026 Much has been written about turning NAND gates into computers, yet knowledge of how to build these NAND gates is not as common. You may think that it’s in the realm of transistors and electrical engineering, but we’ll explore a much more exotic substrate: the video codec. Specifically, we’ll talk about the VP8 video codec and how to abuse its prediction mechanisms to simulate combinatorial logic. Our goal is to build up a set of composable “gadgets” which can construct arbitrary logic circuits. .wire { stroke: #000; stroke-width: 1px; fill: none; } .gate { stroke: #000; stroke-width: 1px; fill: none; stroke-linecap: square; } A Tiny Bit About Video Codecs Video codecs are standards which describe a method of encoding a video (a series of images) into some bitstream, and how to decode that bitstream back into the original video. Instead of prescribing exactly how to encode a video, they usually define a general structure and some set of primitives which can be used to encode the video. As such, different video encoder implementations (or even the same encoder with different settings) may encode the same video differently, but all decoders are expected to be able to reconstruct the video regardless. We will not explain the whole inner-workings of VP8, our video codec of choice, and instead focus on a subset relevant to our purposes. Furthermore, the following explanations are not entirely accurate, in an attempt to simplify the prerequisite knowledge to its essence. If you are interested in learning more about video codecs, I’d recommend reading the Theora spec, which is surprisingly readable. You can also read this follow-up post which describes some glossed over details. In a sense, a video is just a series of images. In video codec jargon, these images are called “frames” where each frame is grid of pixels. Frames are generally divided into to two kinds: key-frames and inter-frames. A frame divided into 8x8 blocks of pixels Key-frames are frames which are encoded independently of other frames. All data required to reconstruct the image is contained within the representing frame. The pixel data may be encoded directly into the frame, or predicate using intra-frame prediction. Intra-frame prediction allows the encoder to state that a certain block of the image can be predicted from another nearby block. Since VP8 decodes these blocks row-by-row, from the top-left down to the bottom-right, the intra-frame prediction primitives it offers allow predicting a block using the row above it, the column to the left of it, and the top-left pixel between them. top left top[0] top[1] top[2] top[3] left[0] left[1] left[2] left[3] A block and the pixels it uses for prediction Inter-frames are frames which exploit the fact that subsequent frames don’t change much, and allow predicting blocks of pixels based on previously decoded frames. They offer the same encoding primitives as key-frames, as well as allowing inter-frame prediction: describing a block by referencing a block from a previous frame. We will build our combinatorial circuits purely using key-frames. Partly because the semantics of combinatorial-vs-sequential logic map well to key-frames-vs-inter-frames, and partly because the extra challenge of a limited toolkit is more interesting. Wires and Gates Combinatorial circuits are built up out of inputs, outputs, wires and gates. In our case, instead of electrical current representing True and False, each block in the frame will either be completely white (all pixel values set to 255) or completely black (all pixels values
分享
阅读原文