{"id":6999,"date":"2026-04-25T08:23:29","date_gmt":"2026-04-25T06:23:29","guid":{"rendered":"https:\/\/www.pschatzmann.ch\/home\/?p=6999"},"modified":"2026-04-25T08:46:19","modified_gmt":"2026-04-25T06:46:19","slug":"auto-draft","status":"publish","type":"post","link":"https:\/\/www.pschatzmann.ch\/home\/2026\/04\/25\/auto-draft\/","title":{"rendered":"Bringing H.264 Video to the ESP32-S3 with Arduino"},"content":{"rendered":"\r\n<h1 class=\"wp-block-heading\"><\/h1>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Working with the ESP32-S3 has always been about pushing boundaries\u2014especially when it comes to multimedia. While audio on microcontrollers has become fairly common, video is still considered \u201cout of reach\u201d for most embedded setups.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">That\u2019s what makes the lightweight H.264 support from Espressif Systems so interesting.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Native H.264 Support on ESP32-S3<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Espressif provides a compact H.264 encoder and decoder component as part of their ecosystem. This is a big deal: H.264 (also known as AVC) is one of the most widely used video codecs, powering everything from streaming platforms to embedded vision systems.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">On a resource-constrained device like the ESP32-S3, having access to a optimized software codec opens the door to:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>Low-bandwidth video streaming<\/li>\r\n\r\n\r\n\r\n<li>Embedded camera applications<\/li>\r\n\r\n\r\n\r\n<li>Real-time video processing<\/li>\r\n\r\n\r\n\r\n<li>IoT devices with visual feedback<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">The Problem: Not Arduino-Friendly<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">While the underlying H.264 component is powerful, it\u2019s not immediately usable from the Arduino environment. Most of Espressif\u2019s examples and APIs are designed for ESP-IDF, which can be a barrier if you\u2019re working in Arduino.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">That gap is exactly what I wanted to close.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">My Solution: Arduino H.264 Library for ESP32-S3<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">I created an Arduino-compatible wrapper library that makes it straightforward to use H.264 encoding and decoding directly on the ESP32-S3.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">\ud83d\udc49 <a href=\"https:\/\/github.com\/pschatzmann\/codec-h264-ESP32S3?utm_source=chatgpt.com\">View the project on GitHub<\/a><\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The goal was simple:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>Keep the API clean and Arduino-style<\/li>\r\n\r\n\r\n\r\n<li>Hide ESP-IDF complexity<\/li>\r\n\r\n\r\n\r\n<li>Enable quick integration into existing projects<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Key Features<\/h2>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>H.264 encoding<\/li>\r\n\r\n\r\n\r\n<li>H.264 decoding<\/li>\r\n<li>Integrate with the ESP32 cameras<\/li>\r\n\r\n\r\n\r\n<li>RDP Packetization and Publishing via UDP<\/li>\r\n\r\n\r\n\r\n<li>Lightweight abstraction over Espressif\u2019s component<\/li>\r\n\r\n\r\n\r\n<li>Designed specifically for ESP32-S3<\/li>\r\n\r\n\r\n\r\n<li>Easy integration into Arduino projects<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Example<\/h2>\r\n<p>As a demo, here is an example where I can receive a test video in <a href=\"https:\/\/qgroundcontrol.com\/\">QGroundControl<\/a>:<\/p>\r\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2026\/04\/qgroundcontrol-300x186.png\" alt=\"\" width=\"300\" height=\"186\" class=\"alignnone size-medium wp-image-7017\" srcset=\"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2026\/04\/qgroundcontrol-300x186.png 300w, https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2026\/04\/qgroundcontrol-768x475.png 768w, https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2026\/04\/qgroundcontrol.png 813w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\r\n<h2 class=\"wp-block-heading\">What\u2019s Next?<\/h2>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>In the next blog, I will be deomonstrating how you can use a &#8220;Drawing API&#8221; to publish an animated video.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">If you\u2019re working on something similar, contributions and feedback are always welcome.<\/p>\r\n\r\n\r\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\r\n\r\n\r\n<p class=\"wp-block-paragraph\">H.264 on a microcontroller might sound ambitious\u2014but with the ESP32-S3, it\u2019s surprisingly within reach.<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>Working with the ESP32-S3 has always been about pushing boundaries\u2014especially when it comes to multimedia. While audio on microcontrollers has become fairly common, video is still considered \u201cout of reach\u201d for most embedded setups. That\u2019s what makes the lightweight H.264 support from Espressif Systems so interesting. Native H.264 Support on [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":7014,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"{\"document\":\"AAAYvOivphT3g\/2eDQX86K+mFAj3g\/2eDcYC2wKC1AH80wEMttMBAtjTATwBAQgCQkhEAtIBAQQEEAQBAQgCQkgAsgEBAQgCQkgAngcBAQgCQkgAvAIBAQgCQkgAkAEBAQgCQkgAkAgBAQgCQkgAtAMBAQgASA4CAQEIAkoAiAEBAQgCSgCGAQEBCAJKAIIBAQEIAkrgA64EAQEIAkJIAJIBAQEIAkJIAJAHAQEIAkJIAKYBAQEIAkJIAK4BAQEIAkJIAKQEAQEIAkJIALgDAQEIAkJIADgBAQgASA4CAQEIAkoAlgEBAQgCSgA8AQEIAkriAo4EAQEIAkJIACgBAQgASA4CAQEIAh5oADoBAQgCHmgAOgEBCAJKAJ4BAQEIAkoAsgEBAQgCSgCSAQEBCAJK5gaACAEBCAJCSAAoAQEIAEgOAgEBCAJKUK4DAQEIAkJIALwCAQEIAEgAEAEBCAJCSPJHaLJNogG2XQ6OAg76rwECJprTAQKkAtkDKACoAAQAqAAoAKEBxwAoAicBBAAoACcAqAEhAicCKAIhACgCJwAoACEAKAQhACgAJwChAAcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInAQQAKAAnAIcAKAInACgBJwAHACgCJwEEACcAhwAoAicBBAAnAIcAKAInAQQAJwCHACgCJwEEACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicBBAAoACcAhwAoAicAKAEnAAcAKAInAQQAJwCHACgCJwEEACcAhwAoAicBBAAnAIcAKAInAQQAKAAnAIcAKAInACgBJwAHACgCJwEEAIQAJwCHACgCJwEEAIQAJwCHACgCJwEEACcAhwAoAicBBAAnAIcAKAInAQQAJwCHACgCJwEEACcAhwAoAicBBAAoACcAhwAoAicAKAEnAAcAKAInAQQAJwCHACgCJwEEACgAJwCHACgCJwAoAScAhwAoAicBBAAoACcAqAAEAIEAhACBAIQAgQCEAKEBqAAhAaihSsVHc3RhdGV2ZXJzaW9uQnJpbmdpbmcgSC4yNjQgVmlkZW8gdG8gdGhlIEVTUDMyLVMzIHdpdGggQXJkdWlub2RvY3VtZW50c2x1Z2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFdvcmtpbmcgd2l0aCB0aGUgRVNQMzItUzMgaGFzIGFsd2F5cyBiZWVuIGFib3V0IHB1c2hpbmcgYm91bmRhcmllc+KAlGVzcGVjaWFsbHkgd2hlbiBpdCBjb21lcyB0byBtdWx0aW1lZGlhLiBXaGlsZSBhdWRpbyBvbiBtaWNyb2NvbnRyb2xsZXJzIGhhcyBiZWNvbWUgZmFpcmx5IGNvbW1vbiwgdmlkZW8gaXMgc3RpbGwgY29uc2lkZXJlZCDigJxvdXQgb2YgcmVhY2jigJ0gZm9yIG1vc3QgZW1iZWRkZWQgc2V0dXBzLmRyb3BDYXBpbm5lckJsb2Nrc3N0YXRldmVyc2lvbmRvY3VtZW50ZGF0ZWRvY3VtZW50c3RhdHVzZG9jdW1lbnR0aXRsZWRvY3VtZW50Y29udGVudGRvY3VtZW50ZXhjZXJwdGRvY3VtZW50YXV0aG9yZG9jdW1lbnRmZWF0dXJlZF9tZWRpYWRvY3VtZW50Y29tbWVudF9zdGF0dXNkb2N1bWVudHBpbmdfc3RhdHVzZG9jdW1lbnRzdGlja3lkb2N1bWVudHRlbXBsYXRlZG9jdW1lbnRmb3JtYXRkb2N1bWVudG1ldGFfaW1wb3J0X21hcmtkb3duX3Byb19sb2FkX2RvY3VtZW50X3NlbGVjdG9yX2ltcG9ydF9tYXJrZG93bl9wcm9fc3VibWl0X3RleHRfdGV4dGFyZWFfZXhhY3RtZXRyaWNzX3NraXBfdHJhY2tpbmdfZXhhY3RtZXRyaWNzX3NpdGVub3RlX2FjdGl2ZV9leGFjdG1ldHJpY3Nfc2l0ZW5vdGVfbm90ZV9leGFjdG1ldHJpY3Nfc2l0ZW5vdGVfY2F0ZWdvcnlmb290bm90ZXNkb2N1bWVudGNhdGVnb3JpZXNkb2N1bWVudHRhZ3Nkb2N1bWVudGJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEJyaW5naW5nIEguMjY0IFZpZGVvIHRvIHRoZSBFU1AzMi1TMyB3aXRoIEFyZHVpbm9sZXZlbGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50V29ya2luZyB3aXRoIHRoZSBFU1AzMi1TMyBoYXMgYWx3YXlzIGJlZW4gYWJvdXQgcHVzaGluZyBib3VuZGFyaWVz4oCUZXNwZWNpYWxseSB3aGVuIGl0IGNvbWVzIHRvIG11bHRpbWVkaWEuIFdoaWxlIGF1ZGlvIG9uIG1pY3JvY29udHJvbGxlcnMgaGFzIGJlY29tZSBmYWlybHkgY29tbW9uLCB2aWRlbyBpcyBzdGlsbCBjb25zaWRlcmVkIOKAnG91dCBvZiByZWFjaOKAnSBmb3IgbW9zdCBlbWJlZGRlZCBzZXR1cHMuZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VGhhdOKAmXMgd2hhdCBtYWtlcyB0aGUgbGlnaHR3ZWlnaHQgSC4yNjQgc3VwcG9ydCBmcm9tIEVzcHJlc3NpZiBTeXN0ZW1zIHNvIGludGVyZXN0aW5nLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudE5hdGl2ZSBILjI2NCBTdXBwb3J0IG9uIEVTUDMyLVMzbGV2ZWxpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEVzcHJlc3NpZiBwcm92aWRlcyBhIGNvbXBhY3QgSC4yNjQgZW5jb2RlciBhbmQgZGVjb2RlciBjb21wb25lbnQgYXMgcGFydCBvZiB0aGVpciBlY29zeXN0ZW0uIFRoaXMgaXMgYSBiaWcgZGVhbDogSC4yNjQgKGFsc28ga25vd24gYXMgQVZDKSBpcyBvbmUgb2YgdGhlIG1vc3Qgd2lkZWx5IHVzZWQgdmlkZW8gY29kZWNzLCBwb3dlcmluZyBldmVyeXRoaW5nIGZyb20gc3RyZWFtaW5nIHBsYXRmb3JtcyB0byBlbWJlZGRlZCB2aXNpb24gc3lzdGVtcy5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRPbiBhIHJlc291cmNlLWNvbnN0cmFpbmVkIGRldmljZSBsaWtlIHRoZSBFU1AzMi1TMywgaGF2aW5nIGFjY2VzcyB0byBhIG9wdGltaXplZCBzb2Z0d2FyZSBjb2RlYyBvcGVucyB0aGUgZG9vciB0bzpkcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc29yZGVyZWR2YWx1ZXNpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudExvdy1iYW5kd2lkdGggdmlkZW8gc3RyZWFtaW5naW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRFbWJlZGRlZCBjYW1lcmEgYXBwbGljYXRpb25zaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRSZWFsLXRpbWUgdmlkZW8gcHJvY2Vzc2luZ2lubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50SW9UIGRldmljZXMgd2l0aCB2aXN1YWwgZmVlZGJhY2tpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFRoZSBQcm9ibGVtOiBOb3QgQXJkdWluby1GcmllbmRseWxldmVsaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRXaGlsZSB0aGUgdW5kZXJseWluZyBILjI2NCBjb21wb25lbnQgaXMgcG93ZXJmdWwsIGl04oCZcyBub3QgaW1tZWRpYXRlbHkgdXNhYmxlIGZyb20gdGhlIEFyZHVpbm8gZW52aXJvbm1lbnQuIE1vc3Qgb2YgRXNwcmVzc2lm4oCZcyBleGFtcGxlcyBhbmQgQVBJcyBhcmUgZGVzaWduZWQgZm9yIEVTUC1JREYsIHdoaWNoIGNhbiBiZSBhIGJhcnJpZXIgaWYgeW914oCZcmUgd29ya2luZyBpbiBBcmR1aW5vLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudFRoYXQgZ2FwIGlzIGV4YWN0bHkgd2hhdCBJIHdhbnRlZCB0byBjbG9zZS5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRNeSBTb2x1dGlvbjogQXJkdWlubyBILjI2NCBMaWJyYXJ5IGZvciBFU1AzMi1TM2xldmVsaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRJIGNyZWF0ZWQgYW4gQXJkdWluby1jb21wYXRpYmxlIHdyYXBwZXIgbGlicmFyeSB0aGF0IG1ha2VzIGl0IHN0cmFpZ2h0Zm9yd2FyZCB0byB1c2UgSC4yNjQgZW5jb2RpbmcgYW5kIGRlY29kaW5nIGRpcmVjdGx5IG9uIHRoZSBFU1AzMi1TMy5kcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnTwn5GJIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wc2NoYXR6bWFubi9jb2RlYy1oMjY0LUVTUDMyUzM\/dXRtX3NvdXJjZT1jaGF0Z3B0LmNvbSI+VmlldyB0aGUgcHJvamVjdCBvbiBHaXRIdWI8L2E+ZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50VGhlIGdvYWwgd2FzIHNpbXBsZTpkcm9wQ2FwaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc29yZGVyZWR2YWx1ZXNpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEtlZXAgdGhlIEFQSSBjbGVhbiBhbmQgQXJkdWluby1zdHlsZWlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50SGlkZSBFU1AtSURGIGNvbXBsZXhpdHlpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEVuYWJsZSBxdWljayBpbnRlZ3JhdGlvbiBpbnRvIGV4aXN0aW5nIHByb2plY3RzaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRLZXkgRmVhdHVyZXNsZXZlbGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNvcmRlcmVkdmFsdWVzaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRILjI2NCBlbmNvZGluZyBzdXBwb3J0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRILjI2NCBkZWNvZGluZyBzdXBwb3J0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRSRFAgUGFja2V0aXphdGlvbiBhbmQgUHVibGlzaGluZyB2aWEgVURQaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRMaWdodHdlaWdodCBhYnN0cmFjdGlvbiBvdmVyIEVzcHJlc3NpZuKAmXMgY29tcG9uZW50aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnREZXNpZ25lZCBzcGVjaWZpY2FsbHkgZm9yIEVTUDMyLVMzaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRFYXN5IGludGVncmF0aW9uIGludG8gQXJkdWlubyBwcm9qZWN0c2lubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50V2hhdOKAmXMgTmV4dD9sZXZlbGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNvcmRlcmVkdmFsdWVzaW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRJbiB0aGUgbmV4dCBibG9nLCBJIHdpbGwgYmUgZGVvbW9uc3RyYXRpbmcgaG93IHlvdSBjYW4gdXNlIGEgIkRyYXdpbmcgQVBJIiB0byBwdWJsaXNoIGFuIGFuaW1hdGVkIHZpZGVvLmlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50SWYgeW914oCZcmUgd29ya2luZyBvbiBzb21ldGhpbmcgc2ltaWxhciwgY29udHJpYnV0aW9ucyBhbmQgZmVlZGJhY2sgYXJlIGFsd2F5cyB3ZWxjb21lLmRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzb3BhY2l0eXRhZ05hbWVpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudEguMjY0IG9uIGEgbWljcm9jb250cm9sbGVyIG1pZ2h0IHNvdW5kIGFtYml0aW91c+KAlGJ1dCB3aXRoIHRoZSBFU1AzMi1TMywgaXTigJlzIHN1cnByaXNpbmdseSB3aXRoaW4gcmVhY2guZHJvcENhcGlubmVyQmxvY2tzPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjF9IC0tPgo8aDEgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPjwvaDE+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+V29ya2luZyB3aXRoIHRoZSBFU1AzMi1TMyBoYXMgYWx3YXlzIGJlZW4gYWJvdXQgcHVzaGluZyBib3VuZGFyaWVz4oCUZXNwZWNpYWxseSB3aGVuIGl0IGNvbWVzIHRvIG11bHRpbWVkaWEuIFdoaWxlIGF1ZGlvIG9uIG1pY3JvY29udHJvbGxlcnMgaGFzIGJlY29tZSBmYWlybHkgY29tbW9uLCB2aWRlbyBpcyBzdGlsbCBjb25zaWRlcmVkIOKAnG91dCBvZiByZWFjaOKAnSBmb3IgbW9zdCBlbWJlZGRlZCBzZXR1cHMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+VGhhdOKAmXMgd2hhdCBtYWtlcyB0aGUgbGlnaHR3ZWlnaHQgSC4yNjQgc3VwcG9ydCBmcm9tIEVzcHJlc3NpZiBTeXN0ZW1zIHNvIGludGVyZXN0aW5nLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpoZWFkaW5nIC0tPgo8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPk5hdGl2ZSBILjI2NCBTdXBwb3J0IG9uIEVTUDMyLVMzPC9oMj4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5Fc3ByZXNzaWYgcHJvdmlkZXMgYSBjb21wYWN0IEguMjY0IGVuY29kZXIgYW5kIGRlY29kZXIgY29tcG9uZW50IGFzIHBhcnQgb2YgdGhlaXIgZWNvc3lzdGVtLiBUaGlzIGlzIGEgYmlnIGRlYWw6IEguMjY0IChhbHNvIGtub3duIGFzIEFWQykgaXMgb25lIG9mIHRoZSBtb3N0IHdpZGVseSB1c2VkIHZpZGVvIGNvZGVjcywgcG93ZXJpbmcgZXZlcnl0aGluZyBmcm9tIHN0cmVhbWluZyBwbGF0Zm9ybXMgdG8gZW1iZWRkZWQgdmlzaW9uIHN5c3RlbXMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+T24gYSByZXNvdXJjZS1jb25zdHJhaW5lZCBkZXZpY2UgbGlrZSB0aGUgRVNQMzItUzMsIGhhdmluZyBhY2Nlc3MgdG8gYSBvcHRpbWl6ZWQgc29mdHdhcmUgY29kZWMgb3BlbnMgdGhlIGRvb3IgdG86PC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmxpc3QgLS0+Cjx1bCBjbGFzcz0id3AtYmxvY2stbGlzdCI+PCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT5Mb3ctYmFuZHdpZHRoIHZpZGVvIHN0cmVhbWluZzwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+RW1iZWRkZWQgY2FtZXJhIGFwcGxpY2F0aW9uczwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+UmVhbC10aW1lIHZpZGVvIHByb2Nlc3Npbmc8L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPklvVCBkZXZpY2VzIHdpdGggdmlzdWFsIGZlZWRiYWNrPC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPjwvdWw+CjwhLS0gL3dwOmxpc3QgLS0+Cgo8IS0tIHdwOmhlYWRpbmcgLS0+CjxoMiBjbGFzcz0id3AtYmxvY2staGVhZGluZyI+VGhlIFByb2JsZW06IE5vdCBBcmR1aW5vLUZyaWVuZGx5PC9oMj4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5XaGlsZSB0aGUgdW5kZXJseWluZyBILjI2NCBjb21wb25lbnQgaXMgcG93ZXJmdWwsIGl04oCZcyBub3QgaW1tZWRpYXRlbHkgdXNhYmxlIGZyb20gdGhlIEFyZHVpbm8gZW52aXJvbm1lbnQuIE1vc3Qgb2YgRXNwcmVzc2lm4oCZcyBleGFtcGxlcyBhbmQgQVBJcyBhcmUgZGVzaWduZWQgZm9yIEVTUC1JREYsIHdoaWNoIGNhbiBiZSBhIGJhcnJpZXIgaWYgeW914oCZcmUgd29ya2luZyBpbiBBcmR1aW5vLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRoYXQgZ2FwIGlzIGV4YWN0bHkgd2hhdCBJIHdhbnRlZCB0byBjbG9zZS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyAtLT4KPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj5NeSBTb2x1dGlvbjogQXJkdWlubyBILjI2NCBMaWJyYXJ5IGZvciBFU1AzMi1TMzwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+SSBjcmVhdGVkIGFuIEFyZHVpbm8tY29tcGF0aWJsZSB3cmFwcGVyIGxpYnJhcnkgdGhhdCBtYWtlcyBpdCBzdHJhaWdodGZvcndhcmQgdG8gdXNlIEguMjY0IGVuY29kaW5nIGFuZCBkZWNvZGluZyBkaXJlY3RseSBvbiB0aGUgRVNQMzItUzMuPC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCAtLT4KPHA+8J+RiSA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcHNjaGF0em1hbm4vY29kZWMtaDI2NC1FU1AzMlMzP3V0bV9zb3VyY2U9Y2hhdGdwdC5jb20iPlZpZXcgdGhlIHByb2plY3Qgb24gR2l0SHViPC9hPjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPlRoZSBnb2FsIHdhcyBzaW1wbGU6PC9wPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOmxpc3QgLS0+Cjx1bCBjbGFzcz0id3AtYmxvY2stbGlzdCI+PCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT5LZWVwIHRoZSBBUEkgY2xlYW4gYW5kIEFyZHVpbm8tc3R5bGU8L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPkhpZGUgRVNQLUlERiBjb21wbGV4aXR5PC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT5FbmFibGUgcXVpY2sgaW50ZWdyYXRpb24gaW50byBleGlzdGluZyBwcm9qZWN0czwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT48L3VsPgo8IS0tIC93cDpsaXN0IC0tPgoKPCEtLSB3cDpoZWFkaW5nIC0tPgo8aDIgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciPktleSBGZWF0dXJlczwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOmxpc3QgLS0+Cjx1bCBjbGFzcz0id3AtYmxvY2stbGlzdCI+PCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT5ILjI2NCBlbmNvZGluZyA8L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPkguMjY0IGRlY29kaW5nIDwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+UkRQIFBhY2tldGl6YXRpb24gYW5kIFB1Ymxpc2hpbmcgdmlhIFVEUDwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+TGlnaHR3ZWlnaHQgYWJzdHJhY3Rpb24gb3ZlciBFc3ByZXNzaWbigJlzIGNvbXBvbmVudDwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+RGVzaWduZWQgc3BlY2lmaWNhbGx5IGZvciBFU1AzMi1TMzwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+RWFzeSBpbnRlZ3JhdGlvbiBpbnRvIEFyZHVpbm8gcHJvamVjdHM8L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+PC91bD4KPCEtLSAvd3A6bGlzdCAtLT4KCjwhLS0gd3A6aGVhZGluZyAtLT4KPGgyIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIj5XaGF04oCZcyBOZXh0PzwvaDI+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOmxpc3QgLS0+Cjx1bCBjbGFzcz0id3AtYmxvY2stbGlzdCI+PCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT5JbiB0aGUgbmV4dCBibG9nLCBJIHdpbGwgYmUgZGVvbW9uc3RyYXRpbmcgaG93IHlvdSBjYW4gdXNlIGEgIkRyYXdpbmcgQVBJIiB0byBwdWJsaXNoIGFuIGFuaW1hdGVkIHZpZGVvLjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT48L3VsPgo8IS0tIC93cDpsaXN0IC0tPgoKPCEtLSB3cDpwYXJhZ3JhcGggLS0+CjxwPklmIHlvdeKAmXJlIHdvcmtpbmcgb24gc29tZXRoaW5nIHNpbWlsYXIsIGNvbnRyaWJ1dGlvbnMgYW5kIGZlZWRiYWNrIGFyZSBhbHdheXMgd2VsY29tZS48L3A+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6c2VwYXJhdG9yIC0tPgo8aHIgY2xhc3M9IndwLWJsb2NrLXNlcGFyYXRvciBoYXMtYWxwaGEtY2hhbm5lbC1vcGFjaXR5Ii8+CjwhLS0gL3dwOnNlcGFyYXRvciAtLT4KCjwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8cD5ILjI2NCBvbiBhIG1pY3JvY29udHJvbGxlciBtaWdodCBzb3VuZCBhbWJpdGlvdXPigJRidXQgd2l0aCB0aGUgRVNQMzItUzMsIGl04oCZcyBzdXJwcmlzaW5nbHkgd2l0aGluIHJlYWNoLjwvcD4KPCEtLSAvd3A6cGFyYWdyYXBoIC0tPnN0YXRlc2F2ZWRBdHN0YXRlc2F2ZWRCeQUHMQgECAcECgenAwcLBQcIBAgGCAUIBwgHCAYIDggOCAsIBkgBBggEKykbHRsfCQgKCAQIBggHBAoHMQULCAcECgenAwcLCAcECgeWAQcLCAcECgcgBQsIBwQKB4AEBwsIBwQKB7IBBwsIBwQKBwYLCAcECgcdCwgHBAoHHAsIBwQKBxoLCAcECgcgCwgHBAoHIQULCAcECgegAwcLCAcECgcrBwsIBwQKBy8FCwgHBAoHigIHCwgHBAoHtAEHCwgHBAoHFAcLCAcECgcGCwgHBAoHJAsIBwQKBxcLCAcECgcvCwgHBAoHDAULCAcECgcGCwgHBAoHDwcLCAcECgcPBwsIBwQKBygLCAcECgcyCwgHBAoHIgsIBwQKByYLCAcECgcMBQsIBwQKBwYLCAcECgeoAQsIBwQKB5YBBwsIBwQKRwALCAcECgenAQcLPbsuhwGCEgUHBQcSAQAAAAEAAAcBDQAGAQIAkgIBkwFBAAIAQgEBAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAAIAQQAAQQACAEEAAgBBAAIAQQACAEEAAEEAAgBBAAIAQQACAEEAAgBBAAIAQQACAEEAAgBBAABBAAIAQQACAEEAAEEAAgAIQaYBMUcAQQQCEgB9AXcTMjAyNi0wNC0yNVQwODoyMzoyOXcGY2xvc2VkdwphdXRvLWRyYWZ0dyQ0NGVmMmIwZC1jYzk3LTQyZGMtYTFkOS05ZGM0NTM1Njk4NzB4dw5jb3JlL3BhcmFncmFwaHl7QnncNRhU4AB7QeRMv0eAAADaAgB9AX0AdwRvcGVueXcAdwhzdGFuZGFyZH0AeXl3AH0AdwB1AHckZWMwMjljM2YtZDhiNC00YTIwLWIwMTMtMzUxNTA3ZThmYzBkeHcMY29yZS9oZWFkaW5nfQF3JDQ0ZWYyYjBkLWNjOTctNDJkYy1hMWQ5LTlkYzQ1MzU2OTg3MHh3DmNvcmUvcGFyYWdyYXBoeXckOTk2YjQxNTctNWUxMi00ZTczLTkwZWItODZjZWQyNTJkNTBkeHcOY29yZS9wYXJhZ3JhcGh5dyQwMDk5NTYyZC0yNzQ5LTQ0ZTMtYmY5YS1lMzkxYmVkZGIzYjR4dwxjb3JlL2hlYWRpbmd9AnckYjE4OGRkZTUtZGY4NS00YmExLWFhOGYtY2NmYjc5NDBiMDgyeHcOY29yZS9wYXJhZ3JhcGh5dyQ4NDBlNDg4ZS0xZGVjLTRhZmQtYTI4YS1lODRlM2I4NmE2MDR4dw5jb3JlL3BhcmFncmFwaHl3JDBlZjk2MTM2LTk5MjctNDc3YS1iZTBmLWM5MGIwNDkwMDBkZXh3CWNvcmUvbGlzdHl3AHckNjA5NTdmODgtMGFhMS00NTRlLWI2MjItMDg1YzI4YmMxNmNleHcOY29yZS9saXN0LWl0ZW13JDY4MTQ0OTc2LTE2NzItNGMzYi05NzZlLWViNDAzZDllYzU3MXh3DmNvcmUvbGlzdC1pdGVtdyRhYzI4YjVjYy02YjRkLTRhMjEtOWU5OC01NGU1MTU2MzM5MGR4dw5jb3JlL2xpc3QtaXRlbXckN2UwZDdhZjMtMWNhZC00NWQ3LThkOTAtZGNmZjQxMzBmNjM4eHcOY29yZS9saXN0LWl0ZW13JDA4YTY5ZGM5LTdjYmYtNGIyZi05NmQ2LWM5MmRlMjZjY2M3OXh3DGNvcmUvaGVhZGluZ30CdyQxMjc0YmE0Ny0xOWYwLTQ1NjgtODQyNC0yZTM2YmJiOTQ0YmN4dw5jb3JlL3BhcmFncmFwaHl3JDQ3ZWI5YjA1LWMxNWQtNDhjZi04NmE5LWIyZmFlZDBhZDgzNnh3DmNvcmUvcGFyYWdyYXBoeXckZDNkN2Q3ZjktNTg0Mi00MjJlLWEyZTYtZDYwYmQ5NjBkMDc2eHcMY29yZS9oZWFkaW5nfQJ3JDFmNDBlNjM0LWYyYjUtNDcxMC1hMzc2LTdlMjJhMTkyZjIxZHh3DmNvcmUvcGFyYWdyYXBoeXckMTUwYjZkMzUtZDI2My00MDUxLWFhNTctYjA1MzEwZjNlMzA5eHcOY29yZS9wYXJhZ3JhcGh5dyRjMGQxZTczNS0yYmM2LTQ5YzItYWU2MC04ZWY5OWU0YWFjMDN4dw5jb3JlL3BhcmFncmFwaHl3JDQxOGU0MjdkLTExNmUtNDgyYi1iNGViLTZlODk1ZWUyMGViZnh3CWNvcmUvbGlzdHl3AHckZmUxZWFkMzEtNmQxMi00ZWRlLWE1ZjYtMjQxNjFhY2NlYzlmeHcOY29yZS9saXN0LWl0ZW13JGYxNGFhMTEzLTUxMmYtNGUxZS1hNjU4LWJmMTZmNTY1NjBhOHh3DmNvcmUvbGlzdC1pdGVtdyRhZmJmYThjMS05MzJhLTQ5N2MtOTdkZC1lZWQzMmNhNDU4ODN4dw5jb3JlL2xpc3QtaXRlbXckN2I3ODdlZmItZTljMS00NTk2LWE3MWYtYTlmN2MyZmRlNzc2eHcMY29yZS9oZWFkaW5nfQJ3JDU3NWEzOGRhLWVmODAtNDA0My05OWY5LWJkYTQxYzVlNmVmNHh3CWNvcmUvbGlzdHl3AHckMzQ2ZTdlYmQtMDZjMS00YzMzLTk0NjctMzBlN2I2MjA3NTQ0eHcOY29yZS9saXN0LWl0ZW13JDUxY2I3ZjU3LWFlNDYtNGM2Ny1hYWE0LWRmNmYzMmNkODY0YXh3DmNvcmUvbGlzdC1pdGVtdyQ0NWQxY2JhNC0yM2VkLTQ4YjctOTkzOS00NDUwY2JlMzNhYzl4dw5jb3JlL2xpc3QtaXRlbXckNDIxYWIzNmMtNjAzMy00NWFjLWFhNjAtYTY3YzM2ZTdkYzlmeHcOY29yZS9saXN0LWl0ZW13JGMwMWI3NTI2LWFkODMtNGZjYS1hNTlhLTIyM2RkMjcwNDVkM3h3DmNvcmUvbGlzdC1pdGVtdyQxZDU4NWYzYS05MDg4LTQ4M2YtODkwZi0yYTQxNWY3MWYyYzZ4dw5jb3JlL2xpc3QtaXRlbXckZDkwYmI2MGMtY2EwNi00ODlhLThmZWQtN2MxYjM0MWMwZjlheHcMY29yZS9oZWFkaW5nfQJ3JDA3MWI5OTBlLTQxYjMtNGQ2Yi1hZTIzLTdlNzNhZGIzZjY3Y3h3CWNvcmUvbGlzdHl3AHckNDUzN2M1ZGEtNGQ4My00NjFlLTk5ODktYTQxNmQyYzQxNDBkeHcOY29yZS9saXN0LWl0ZW13JGYwOTE4NDAzLTRiZjgtNDUzYi1hMWE2LWNiMWRiMGEwNzU3M3h3DmNvcmUvcGFyYWdyYXBoeXckZGE2YTFkMzktZjg5Zi00ZjI2LTk5YjMtZTNiN2FiZTgyYTQ2eHcOY29yZS9zZXBhcmF0b3J3DWFscGhhLWNoYW5uZWx3AmhydyQ2MDYyYTM5ZS04OGMyLTQ5MzYtOWJiNS02MmI5ODM4ZTdiZjZ4dw5jb3JlL3BhcmFncmFwaHl3AHUBfRR3B3B1Ymxpc2gCvPSXkwoBNQH3wb7PBg4AAgYABQAFAAIABjAC7gH8CwYWBt0EMLsXBkcGggkBAQE=\",\"updateId\":499092746}","_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[20],"tags":[],"class_list":["post-6999","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Bringing H.264 Video to the ESP32-S3 with Arduino - Phil Schatzmann<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.pschatzmann.ch\/home\/2026\/04\/25\/auto-draft\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bringing H.264 Video to the ESP32-S3 with Arduino - Phil Schatzmann\" \/>\n<meta property=\"og:description\" content=\"Working with the ESP32-S3 has always been about pushing boundaries\u2014especially when it comes to multimedia. While audio on microcontrollers has become fairly common, video is still considered \u201cout of reach\u201d for most embedded setups. That\u2019s what makes the lightweight H.264 support from Espressif Systems so interesting. Native H.264 Support on [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.pschatzmann.ch\/home\/2026\/04\/25\/auto-draft\/\" \/>\n<meta property=\"og:site_name\" content=\"Phil Schatzmann\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-25T06:23:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-25T06:46:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2026\/04\/h264.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"279\" \/>\n\t<meta property=\"og:image:height\" content=\"181\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"pschatzmann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"pschatzmann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2026\\\/04\\\/25\\\/auto-draft\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2026\\\/04\\\/25\\\/auto-draft\\\/\"},\"author\":{\"name\":\"pschatzmann\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#\\\/schema\\\/person\\\/73a53638a4e34e8373405fd737dac9b1\"},\"headline\":\"Bringing H.264 Video to the ESP32-S3 with Arduino\",\"datePublished\":\"2026-04-25T06:23:29+00:00\",\"dateModified\":\"2026-04-25T06:46:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2026\\\/04\\\/25\\\/auto-draft\\\/\"},\"wordCount\":346,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#\\\/schema\\\/person\\\/73a53638a4e34e8373405fd737dac9b1\"},\"image\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2026\\\/04\\\/25\\\/auto-draft\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/h264.jpeg\",\"articleSection\":[\"Arduino\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2026\\\/04\\\/25\\\/auto-draft\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2026\\\/04\\\/25\\\/auto-draft\\\/\",\"url\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2026\\\/04\\\/25\\\/auto-draft\\\/\",\"name\":\"Bringing H.264 Video to the ESP32-S3 with Arduino - Phil Schatzmann\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2026\\\/04\\\/25\\\/auto-draft\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2026\\\/04\\\/25\\\/auto-draft\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/h264.jpeg\",\"datePublished\":\"2026-04-25T06:23:29+00:00\",\"dateModified\":\"2026-04-25T06:46:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2026\\\/04\\\/25\\\/auto-draft\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2026\\\/04\\\/25\\\/auto-draft\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2026\\\/04\\\/25\\\/auto-draft\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/h264.jpeg\",\"contentUrl\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/h264.jpeg\",\"width\":279,\"height\":181},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/2026\\\/04\\\/25\\\/auto-draft\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bringing H.264 Video to the ESP32-S3 with Arduino\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#website\",\"url\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/\",\"name\":\"Phil Schatzmann Consulting\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#\\\/schema\\\/person\\\/73a53638a4e34e8373405fd737dac9b1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/home\\\/#\\\/schema\\\/person\\\/73a53638a4e34e8373405fd737dac9b1\",\"name\":\"pschatzmann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/pschatzmann.png\",\"url\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/pschatzmann.png\",\"contentUrl\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/pschatzmann.png\",\"width\":305,\"height\":305,\"caption\":\"pschatzmann\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.pschatzmann.ch\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/pschatzmann.png\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Bringing H.264 Video to the ESP32-S3 with Arduino - Phil Schatzmann","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.pschatzmann.ch\/home\/2026\/04\/25\/auto-draft\/","og_locale":"en_US","og_type":"article","og_title":"Bringing H.264 Video to the ESP32-S3 with Arduino - Phil Schatzmann","og_description":"Working with the ESP32-S3 has always been about pushing boundaries\u2014especially when it comes to multimedia. While audio on microcontrollers has become fairly common, video is still considered \u201cout of reach\u201d for most embedded setups. That\u2019s what makes the lightweight H.264 support from Espressif Systems so interesting. Native H.264 Support on [&hellip;]","og_url":"https:\/\/www.pschatzmann.ch\/home\/2026\/04\/25\/auto-draft\/","og_site_name":"Phil Schatzmann","article_published_time":"2026-04-25T06:23:29+00:00","article_modified_time":"2026-04-25T06:46:19+00:00","og_image":[{"width":279,"height":181,"url":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2026\/04\/h264.jpeg","type":"image\/jpeg"}],"author":"pschatzmann","twitter_card":"summary_large_image","twitter_misc":{"Written by":"pschatzmann","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.pschatzmann.ch\/home\/2026\/04\/25\/auto-draft\/#article","isPartOf":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2026\/04\/25\/auto-draft\/"},"author":{"name":"pschatzmann","@id":"https:\/\/www.pschatzmann.ch\/home\/#\/schema\/person\/73a53638a4e34e8373405fd737dac9b1"},"headline":"Bringing H.264 Video to the ESP32-S3 with Arduino","datePublished":"2026-04-25T06:23:29+00:00","dateModified":"2026-04-25T06:46:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2026\/04\/25\/auto-draft\/"},"wordCount":346,"commentCount":0,"publisher":{"@id":"https:\/\/www.pschatzmann.ch\/home\/#\/schema\/person\/73a53638a4e34e8373405fd737dac9b1"},"image":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2026\/04\/25\/auto-draft\/#primaryimage"},"thumbnailUrl":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2026\/04\/h264.jpeg","articleSection":["Arduino"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.pschatzmann.ch\/home\/2026\/04\/25\/auto-draft\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.pschatzmann.ch\/home\/2026\/04\/25\/auto-draft\/","url":"https:\/\/www.pschatzmann.ch\/home\/2026\/04\/25\/auto-draft\/","name":"Bringing H.264 Video to the ESP32-S3 with Arduino - Phil Schatzmann","isPartOf":{"@id":"https:\/\/www.pschatzmann.ch\/home\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2026\/04\/25\/auto-draft\/#primaryimage"},"image":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2026\/04\/25\/auto-draft\/#primaryimage"},"thumbnailUrl":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2026\/04\/h264.jpeg","datePublished":"2026-04-25T06:23:29+00:00","dateModified":"2026-04-25T06:46:19+00:00","breadcrumb":{"@id":"https:\/\/www.pschatzmann.ch\/home\/2026\/04\/25\/auto-draft\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.pschatzmann.ch\/home\/2026\/04\/25\/auto-draft\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.pschatzmann.ch\/home\/2026\/04\/25\/auto-draft\/#primaryimage","url":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2026\/04\/h264.jpeg","contentUrl":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2026\/04\/h264.jpeg","width":279,"height":181},{"@type":"BreadcrumbList","@id":"https:\/\/www.pschatzmann.ch\/home\/2026\/04\/25\/auto-draft\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.pschatzmann.ch\/home\/"},{"@type":"ListItem","position":2,"name":"Bringing H.264 Video to the ESP32-S3 with Arduino"}]},{"@type":"WebSite","@id":"https:\/\/www.pschatzmann.ch\/home\/#website","url":"https:\/\/www.pschatzmann.ch\/home\/","name":"Phil Schatzmann Consulting","description":"","publisher":{"@id":"https:\/\/www.pschatzmann.ch\/home\/#\/schema\/person\/73a53638a4e34e8373405fd737dac9b1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.pschatzmann.ch\/home\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.pschatzmann.ch\/home\/#\/schema\/person\/73a53638a4e34e8373405fd737dac9b1","name":"pschatzmann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2022\/08\/pschatzmann.png","url":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2022\/08\/pschatzmann.png","contentUrl":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2022\/08\/pschatzmann.png","width":305,"height":305,"caption":"pschatzmann"},"logo":{"@id":"https:\/\/www.pschatzmann.ch\/wp-content\/uploads\/2022\/08\/pschatzmann.png"}}]}},"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/posts\/6999","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/comments?post=6999"}],"version-history":[{"count":10,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/posts\/6999\/revisions"}],"predecessor-version":[{"id":7019,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/posts\/6999\/revisions\/7019"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/media\/7014"}],"wp:attachment":[{"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/media?parent=6999"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/categories?post=6999"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pschatzmann.ch\/home\/wp-json\/wp\/v2\/tags?post=6999"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}