Obsah:
- Krok 1: Vlastnosti a obmedzenia ESP32
- Krok 2: Formát videa
- Krok 3: Formát zvuku
- Krok 4: Konverzia formátu
- Krok 5: Príprava hardvéru
- Krok 6: Rozhranie SD
- Krok 7: Dajte to dohromady
- Krok 8: Program
- Krok 9: Benchmark
- Krok 10: Šťastné hranie
Video: Prehrávajte video s ESP32: 10 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-31 10:24
Tento návod ukazuje niečo o prehrávaní videa a zvuku s ESP32.
Krok 1: Vlastnosti a obmedzenia ESP32
Vlastnosti
- Pre užívateľský priestor sú k dispozícii 4 zbernice SPI, 2 zbernice SPI, ide o SPI2 a SPI3 alebo sa nazývajú HSPI a VSPI. Oba zbernice SPI môžu pracovať maximálne 80 MHz. Teoreticky môže tlačiť 320 x 240 16-bitových farebných pixelov na SPI LCD pri 60 fps, ale zatiaľ nepočítal časovú réžiu potrebnú na čítanie a dekódovanie video dát.
- 1-bitová / 4-bitová zbernica SD môže pripojiť kartu SD v natívnom protokole
- Interný zvukový výstup DAC I2S
- viac ako 100 KB RAM k dispozícii pre video a audio buffer
- Dostatočne slušný výpočtový výkon na dekódovanie kompresie údajov JPEG (prehrávanie Motion JPEG) a LZW (prehrávanie animovaného GIF)
- Dvojjadrová verzia dokáže rozdeliť načítané údaje z karty SD, dekódovať ich a odoslať na SPI LCD do paralelných viacerých úloh a zvýšiť výkon prehrávania.
Obmedzenia
- nedostatok vnútornej pamäte RAM na vyrovnávaciu pamäť s dvojitým rámcom pre 320 x 240 v 16-bitových farbách, obmedzilo to dizajn viacerých úloh. S externým systémom PSRAM to môže trochu prekonať, aj keď je to pomalšie ako vnútorná pamäť RAM
- nestačí dekódovať video vo formáte mp4
- Nie všetky verzie ESP32 majú 2 jadrá, viacúlohová ukážka ťaží iba z dvojjadrovej verzie
Odkaz:
Krok 2: Formát videa
RGB565
Alebo nazývaný 16-bitová farba je formát nespracovaných údajov, ktorý sa bežne používa pri komunikácii medzi MCU a farebným displejom. Každý farebný pixel je reprezentovaný 16-bitovou hodnotou, prvých 5 bitov je červená hodnota, nasledujúcich 6-bitov je zelená hodnota a potom 5-bitová modrá hodnota. 16-bitová hodnota môže spôsobiť 65 536 variácií farieb, takže sa nazýva aj 64 000 farieb. 1 minúta videa s rozlíšením 320 x 240@30 snímok za sekundu bude mať veľkosť: 16 * 320 * 240 * 30 * 60 = 2211840000 bitov = 276480000 bajtov alebo viac ako 260 MB
Animovaný GIF
Toto je bežný formát súborov na webe od 90. rokov minulého storočia. Obmedzuje variácie farieb pre každú obrazovku až na 256 farieb a neopakuje sa ukladanie pixelu rovnakej farby ako v predchádzajúcom ráme. Môže teda výrazne znížiť veľkosť súboru, najmä keď každý rámec animácie nezmení príliš veľa podrobností. Kompresia LZW je schopná dekódovať počítač z 90. rokov, takže ESP32 má tiež dostatočne spravodlivý výpočtový výkon na dekódovanie v reálnom čase.
Motion JPEG
Alebo sa nazýva M-JPEG / MJPEG je bežný formát kompresie videa pre hardvér na zachytávanie videa s obmedzeným výpočtovým výkonom. Je to vlastne len zreťazenie stále JPEG rámcov. V porovnaní s MPEG alebo MP4, Motion JPEG nepotrebujú výpočtovo náročnú techniku predikcie medzisnímok, každý rámec je nezávislý. Na kódovanie a dekódovanie je teda potrebných menej zdrojov.
Odkaz:
en.wikipedia.org/wiki/List_of_monochrome_a…
en.wikipedia.org/wiki/GIF
en.wikipedia.org/wiki/Motion_JPEG
Krok 3: Formát zvuku
PCM
Formát nespracovaných údajov pre digitálny zvuk. ESP32 DAC používa 16-bitovú hĺbku, to znamená, že každé 16-bitové dáta predstavujú digitálny vzorkovaný analógový signál. Väčšina zvukových záznamov videa a piesní bežne používa vzorkovaciu frekvenciu 44 100 MHz, to znamená 44 100 vzorkovaných analógových signálov za každú sekundu. 1 minúta mono audio PCM nespracovaných dát bude mať veľkosť: 16 * 44100 * 60 = 42336000 bitov = 5292000 bajtov alebo viac ako 5 MB. Veľkosť stereofónneho zvuku bude dvojnásobná, tj viac ako 10 MB
MP3
MPEG Layer 3 je komprimovaný zvukový formát, ktorý sa od deväťdesiatych rokov bežne používa na kompresiu piesní. To môže dramaticky znížiť veľkosť súboru na menej ako jednu desatinu surového formátu PCM
Odkaz:
en.wikipedia.org/wiki/Pulse-code_modulatio…
en.wikipedia.org/wiki/MP3
Krok 4: Konverzia formátu
Tento projekt pomocou FFmpeg prevádza video do čitateľného formátu ESP32.
Ak ešte nie je, stiahnite si a nainštalujte FFmpeg na ich oficiálne stránky:
Previesť na zvuk PCM
ffmpeg -i vstup.mp4 -f u16be -acodec pcm_u16le -ar 44100 -ac 1 44100_u16le.pcm
Previesť na zvuk MP3
ffmpeg -i vstup.mp4 -ar 44100 -ac 1 -q: a 9 44100.mp3
Previesť na RGB565
ffmpeg -i input.mp4 -vf "fps = 9, scale = -1: 176: flags = lanczos, crop = 220: in_h: (in_w -220)/2: 0" -c: v rawvideo -pix_fmt rgb565be 220_9fps. rgb
Previesť na animovaný GIF
ffmpeg -i input.mp4 -vf "fps = 15, scale = -1: 176: flags = lanczos, crop = 220: in_h: (in_w -220)/2: 0, split [s0] [s1]; [s0] palettegen [p]; [s1] [p] paletteuse "-loop -1 220_15fps.gif
Previesť na Motion JPEG
ffmpeg -i input.mp4 -vf "fps = 30, scale = -1: 176: flags = lanczos, crop = 220: in_h: (in_w -220)/2: 0" -q: v 9 220_30fps.mjpeg
Poznámka:
FFmpeg skonvertovaný Animovaný-g.webp" />
Krok 5: Príprava hardvéru
Vývojová doska ESP32
Akákoľvek dvojjadrová doska pre vývojárov ESP32 by mala byť v poriadku, tentokrát používam TTGO ESP32-Micro.
Farebný displej
Akýkoľvek farebný displej, ktorý podporuje Arduino_GFX, by mal byť v poriadku, tentoraz používam oddeľovaciu dosku ILI9225 so slotom na kartu SD.
Zoznam podporovaných farebných displejov Arduino_GFX nájdete na Github:
github.com/moononournation/Arduino_GFX
SD karta
Akákoľvek karta SD by mala byť v poriadku, tentoraz používam SanDisk „normálnej rýchlosti“8 GB micro SD s adaptérom SD.
Zvuk
Ak chcete používať iba slúchadlá, jednoducho pripojte kolíky slúchadiel na kolík 26 a GND môže počúvať zvuk. Alebo môžete použiť malý zosilňovač na prehrávanie zvuku s reproduktorom.
Iní
Niektoré doštičky a drôty na chlebníky
Krok 6: Rozhranie SD
Odlamovacia doska LCD ILI9225 obsahovala aj oddeľovacie kolíky na sloty SD crd. Môže byť použitý ako zbernica SPI alebo 1-bitová zbernica SD. Ako je uvedené v mojich predchádzajúcich pokynoch, uprednostňujem používanie 1-bitovej zbernice SD, takže tento projekt bude založený na 1-bitovej zbernici SD.
Krok 7: Dajte to dohromady
Vyššie uvedené obrázky ukazujú testovaciu platformu, ktorú v tomto projekte používam. Biela doska je vytlačená 3D, môžete si ju stiahnuť a vytlačiť na stránke thingsiverse:
Skutočné pripojenie závisí od toho, ktorý hardvér máte v ruke.
Tu je zhrnutie pripojenia:
ESP32
Vcc -> LCD Vcc GND -> LCD GND GPIO 2 -> SD D0/MISO -> 1k odpor -> Vcc GPIO 14 -> SD CLK GPIO 15 -> SD CMD/MOSI GPIO 18 -> LCD SCK GPIO 19 -> LCD MISO GPIO 22 -> LCD LED GPIO 23 -> LCD MOSI GPIO 27 -> LCD DC/RS GPIO 33 -> LCD RST
Odkaz:
Krok 8: Program
Arduino IDE
Ak to ešte neurobíte, stiahnite si a nainštalujte Arduino IDE:
www.arduino.cc/en/main/software
Podpora ESP32
Ak ešte nemáte nainštalovanú podporu ESP32, postupujte podľa pokynov na inštaláciu:
github.com/espressif/arduino-esp32
Knižnica Arduino_GFX
Stiahnite si najnovšie knižnice Arduino_GFX: (stlačte „Klonovať alebo stiahnuť“-> „Stiahnuť ZIP“)
github.com/moononournation/Arduino_GFX
Importujte knižnice v Arduino IDE. (Ponuka „Skica“Arduino IDE -> „Zahrnúť knižnicu“-> „Pridať. ZIP knižnicu“-> vyberte stiahnutý súbor ZIP)
ESP8266 Zvuk
Stiahnite si najnovšie zvukové knižnice ESP8266: (kliknite na „Klonovať alebo stiahnuť“-> „Stiahnuť ZIP“)
github.com/earlephilhower/ESP8266Audio
Importujte knižnice v Arduino IDE. (Ponuka „Skica“Arduino IDE -> „Zahrnúť knižnicu“-> „Pridať. ZIP knižnicu“-> vyberte stiahnutý súbor ZIP)
RGB565_video ukážkový kód
Stiahnite si najnovší vzorový kód RGB565_video: (stlačte „Klonovať alebo stiahnuť“-> „Stiahnuť ZIP“)
github.com/moononournation/RGB565_video
Údaje o karte SD
Skopírujte skonvertované súbory na kartu SD a vložte ich do zásuvky na kartu LCD
Skompilovať a nahrať
- Otvorte SDMMC_MJPEG_video_PCM_audio_dualSPI_multitask.ino v Arduino IDE
- Ak nepoužívate ILI9225, zmeňte nový kód triedy (okolo riadka 35) na opravu názvu triedy
- Stlačte tlačidlo „Nahrať“Arduino IDE
- Ak sa vám program nepodarilo nahrať, skúste odpojiť spojenie medzi ESP32 GPIO 2 a SD D0/MISO
- Ak zistíte, že orientácia nie je správna, zmeňte hodnotu „otočenia“(0-3) v novom kóde triedy
- Ak program beží dobre, môžete vyskúšať iný ukážkový štart s SDMMC_*
- Ak nemáte slot na kartu SD alebo nemáte nainštalovaný FFmpeg, stále môžete vyskúšať príklad SPIFFS_*
Krok 9: Benchmark
Tu je súhrn výkonu pre rôzne formáty videa (220 x 176) a zvuku (44 100 MHz):
Formát | Snímok za sekundu (fps) |
MJPEG + PCM | 30 |
15 | |
RGB565 + PCM | 9 |
MJPEG + MP3 | 24 |
Poznámka:
- MJPEG + PCM môže dosiahnuť vyššie fps, ale je zbytočné hrať na malej obrazovke vyššej ako 30 fps
- RGB565 nevyžaduje dekódovací proces, ale veľkosť údajov je príliš veľká a veľa času stráveného načítaním údajov z karty SD, 4-bitovej zbernice SD a rýchlejšej karty SD ju môže o niečo zlepšiť (divoký odhad môže dosiahnuť približne 12 snímok za sekundu)
- Proces dekódovania MP3 ešte nie je optimalizovaný, teraz je vyhradený jadro 0 pre dekódovanie MP3 a jadro 1 pre prehrávanie videa
Krok 10: Šťastné hranie
Teraz môžete na svojom ESP32 prehrávať video a zvuk, čo odomklo mnoho možností!
Myslím, že neskôr vyrobím malý vintage televízor …
Odporúča:
Prehrávajte piesne (MP3) s Arduino pomocou PWM na reproduktore alebo Flyback transformátore: 6 krokov (s obrázkami)
Prehrávajte piesne (MP3) s Arduinom pomocou PWM na reproduktore alebo Flyback transformátore: Dobrý deň, priatelia, toto je môj prvý návod, dúfam, že sa vám bude páčiť !! V zásade som v tomto projekte použil sériovú komunikáciu medzi mojím Arduinom a prenosným počítačom, na prenos hudobných údajov z môjho prenosného počítača do Arduina. A pomocou Arduino TIMERS t
Prehrávajte disky CD bez prehrávača diskov CD, pomocou AI a YouTube: 10 krokov (s obrázkami)
Prehrávajte disky CD bez prehrávača diskov CD, pomocou AI a YouTube: Chcete prehrávať disky CD, ale už nemáte prehrávač diskov CD? Nemáte čas na kopírovanie vašich diskov CD? Roztrhli ste ich, ale súbory nie sú v prípade potreby k dispozícii? Žiadny problém. Nechajte AI (umelú inteligenciu) identifikovať vaše CD a prehrajte ho na YouTube! Napísal som aplikáciu pre Android, ktorá robí
Prehrávajte hudbu s Arduinom!: 5 krokov (s obrázkami)
Prehrávajte hudbu s Arduino !: V tomto návode vám ukážem, ako prehrávam hudbu pomocou modulu Arduino UNO a modulu SD Card. Budeme používať komunikáciu SPI. Začnime
Prehrávajte videá dozadu pomocou programu Quicktime Player: 5 krokov
Prehrávajte videá dozadu pomocou prehrávača Quicktime: Toto je najúžasnejší trik storočia. Tento návod vám ukáže jednoduchý spôsob, ako prehrávať videá dozadu bez sťahovania riskantných programov (ak nemáte rýchly čas, budete ho potrebovať.) Na obrázku nie je čo robiť s projektom, ale potreboval som
Prehrávajte MP3 na 70-ročnom gramofóne-žiadne trvalé zmeny: 3 kroky
Prehrávajte MP3 na 70-ročnom rekordéri-žiadne trvalé úpravy: V zásade som urobil nastavenie mono prepojenia medzi zdrojom MP3 alebo médií podľa vášho výberu, počítačom, kazetovým eskom, vysielačkou a priamo zapojeným káblom. k reproduktorovi pomocou svoriek aligátora. Ako vždy, výukové/demo video: PROSÍM, ak