Tartalomjegyzék:
- 1. lépés: Az ESP32 jellemzői és korlátozásai
- 2. lépés: Videó formátum
- 3. lépés: Hangformátum
- 4. lépés: Formázás átalakítása
- 5. lépés: A hardver előkészítése
- 6. lépés: SD interfész
- 7. lépés: Állítsd össze
- 8. lépés: Programozás
- 9. lépés: benchmark
- 10. lépés: Jó játékot
Videó: Videó lejátszása az ESP32 segítségével: 10 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-31 10:20
Ez az utasítások mutatnak valamit a videó és hang lejátszásáról az ESP32 segítségével.
1. lépés: Az ESP32 jellemzői és korlátozásai
Jellemzők
- 4 SPI busz, 2 SPI busz elérhető a felhasználói térben, ezek SPI2 és SPI3, vagy HSPI és VSPI. Mindkét SPI busz legfeljebb 80 MHz -en tud működni. Elméletileg képes 320x240 16 bites színes képpontokat tolni az SPI LCD-re 60 kép / mp sebességgel, de még nem számolta a videoadatok olvasásához és dekódolásához szükséges többletidőt.
- Az 1 bites / 4 bites SD busz natív protokollban csatlakoztathatja az SD kártyát
- I2S belső DAC hangkimenet
- több mint 100 KB RAM áll rendelkezésre video- és audió pufferhez
- Elég tisztességes feldolgozási teljesítmény a JPEG (Motion Motion JPEG lejátszása) és az LZW adattömörítés dekódolásához (animált-g.webp" />
- A kétmagos verzió fel tudja osztani az olvasott adatokat az SD-kártyáról, dekódolni és SPI LCD-re tolni párhuzamos többfeladatos feladatokra, és növelheti a lejátszási teljesítményt
Korlátozások
- nem elegendő belső RAM ahhoz, hogy dupla keretpuffer legyen 320x240 méretű, 16 bites színben, ez korlátozta a többfeladatos kialakítást. A külső PSRAM segítségével kissé legyőzhető, bár lassabb, mint a belső RAM
- nincs elegendő feldolgozási teljesítmény az mp4 videó dekódolásához
- nem minden ESP32 verzió rendelkezik 2 maggal, a többfeladatos minta csak a kétmagos verzióban részesül
Ltsz.:
2. lépés: Videó formátum
RGB565
Vagy az úgynevezett 16 bites szín egy nyers adatformátum, amelyet általában használnak az MCU és a színes kijelző közötti kommunikációban. Minden egyes színes pixelt 16 bites érték képvisel, az első 5 bites piros érték, a 6 bites után zöld érték, majd 5 bites kék érték. A 16 bites érték 65536 színváltozatot hozhat létre, így 64K színeknek is nevezték. Tehát az 1 perces 320x240@30 fps videó mérete: 16 * 320 * 240 * 30 * 60 = 2211840000 bit = 276480000 bájt vagy több mint 260 MB
Animált GIF
Ez az 1990 -es évek óta gyakori fájlformátum az interneten. Az egyes képernyők színváltozatát legfeljebb 256 színre korlátozza, és nem ismétli meg a pixel azonos színű tárolását, mint az előző képkocka. Így jelentősen csökkentheti a fájlméretet, különösen akkor, ha minden animációs keret nem változtat túl sok részletet. Az LZW tömörítést az 1990 -es évek számítógépe dekódolására tervezték, így az ESP32 is elég tisztességes feldolgozási kapacitással rendelkezik a valós idejű dekódoláshoz.
Mozgás JPEG
Vagy M-JPEG / MJPEG néven egy általános tömörítési formátum a korlátozott feldolgozási teljesítményű videofelvételi hardverekhez. Valójában egyszerűen állhatatlan JPEG képkockák összefűzése. Összehasonlítva az MPEG vagy MP4 formátumokkal, a Motion JPEG nem igényel számításigényes interframe predikciós technikát, minden képkocka független. Tehát kevesebb erőforrást igényel a kódolás és a dekódolás.
Ltsz.:
en.wikipedia.org/wiki/List_of_monochrome_a…
en.wikipedia.org/wiki/GIF
en.wikipedia.org/wiki/Motion_JPEG
3. lépés: Hangformátum
PCM
Nyers adatformátum a digitális hanghoz. Az ESP32 DAC 16 bites mélységet használ, ami azt jelenti, hogy minden 16 bites adat digitális mintavételi analóg jelet képvisel. A legtöbb video- és dalhang általában mintavételi frekvenciát használ 44100 MHz -en, ami azt jelenti, hogy minden másodpercben 44100 mintavételezett analóg jelet használnak. Tehát az 1 perces mono audio PCM nyers adatok mérete: 16 * 44100 * 60 = 42336000 bit = 5292000 bájt vagy több mint 5 MB. A sztereó hang mérete dupla lesz, azaz több mint 10 MB
MP3
Az MPEG Layer 3 egy tömörített hangformátum, amelyet széles körben használnak a dalok tömörítésére az 1990 -es évek óta. Drámaian csökkentheti a fájlméretet a nyers PCM formátum egytizedére
Ltsz.:
en.wikipedia.org/wiki/Pulse-code_modulatio…
en.wikipedia.org/wiki/MP3
4. lépés: Formázás átalakítása
Ez a projekt az FFmpeg segítségével konvertálja a videót ESP32 olvasható formátumba.
Kérjük, töltse le és telepítse az FFmpeg -et a hivatalos webhelyükről, ha még nem:
Konvertálás PCM audióvá
ffmpeg -i input.mp4 -f u16be -acodec pcm_u16le -ar 44100 -ac 1 44100_u16le.pcm
Konvertálás MP3 hangra
ffmpeg -i input.mp4 -ar 44100 -ac 1 -q: a 9 44100.mp3
Átalakítás RGB565 -re
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
Konvertálás animált-g.webp
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
Konvertálás Motion JPEG formátumba
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
Jegyzet:
Az FFmpeg konvertált animált-g.webp" />
5. lépés: A hardver előkészítése
ESP32 Dev Board
Bármilyen kétmagos ESP32 fejlesztői kártyának rendben kell lennie, ezúttal TTGO ESP32-Micro-t használok.
Színes kijelző
Bármilyen színes kijelzőnek, amelyet az Arduino_GFX támogat, rendben kell lennie, ezúttal ILI9225 törőlapot használok SD -kártya foglalattal.
A Githubon megtalálhatja az Arduino_GFX által támogatott színes megjelenítési listát:
github.com/moononournation/Arduino_GFX
SD kártya
Bármelyik SD -kártyának rendben kell lennie, ezúttal egy SanDisk "normál sebességű" 8 GB -os micro SD -t használok SD adapterrel.
Hang
Ha csak fejhallgatót szeretne használni, egyszerűen csatlakoztassa a fejhallgató érintkezőit a 26 -os tűhöz, és a GND hallgathatja a hangot. Vagy használhat egy apró erősítőt, hogy hangot játsszon a hangszóróval.
Mások
Néhány kenyérsütő deszkát és kenyeretábla vezetéket
6. lépés: SD interfész
Az ILI9225 LCD törőpanel SD crd foglalatú kitörőcsapokat is tartalmazott. Használható SPI buszként vagy 1 bites SD buszként. Amint azt az előző utasításomban említettem, inkább az 1 bites SD buszt használom, így ez a projekt 1 bites SD buszon fog alapulni.
7. lépés: Állítsd össze
A fenti képek azt a tesztelési platformot mutatják, amelyet ebben a projektben használok. A fehér kenyértábla 3D nyomtatású, letöltheti és kinyomtathatja a thingiverse webhelyről:
A tényleges kapcsolat attól függ, hogy milyen hardvert tart a kezében.
Íme a kapcsolat összefoglalója:
ESP32
Vcc -> LCD Vcc GND -> LCD GND GPIO 2 -> SD D0/MISO -> 1k ellenállás -> 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
Ltsz.:
8. lépés: Programozás
Arduino IDE
Töltse le és telepítse az Arduino IDE programot, ha még nem tette meg:
www.arduino.cc/en/main/software
ESP32 támogatás
Kövesse a telepítési utasításokat az ESP32 támogatás hozzáadásához, ha még nem tette meg:
github.com/espressif/arduino-esp32
Arduino_GFX könyvtár
Töltse le a legújabb Arduino_GFX könyvtárakat: (nyomja meg a "Klón vagy letöltés" -> "Letöltés ZIP" gombot)
github.com/moononournation/Arduino_GFX
Könyvtárak importálása az Arduino IDE -ben. (Arduino IDE "Vázlat" menü -> "Könyvtár beillesztése" -> ". ZIP könyvtár hozzáadása" -> válassza ki a letöltött ZIP fájlt)
ESP8266Audio
Töltse le a legújabb ESP8266Audio könyvtárakat: (nyomja meg a "Clone or Download" -> "Download ZIP" gombot)
github.com/earlephilhower/ESP8266Audio
Könyvtárak importálása az Arduino IDE -ben. (Arduino IDE "Vázlat" menü -> "Könyvtár beillesztése" -> ". ZIP könyvtár hozzáadása" -> válassza ki a letöltött ZIP fájlt)
RGB565_video mintakód
Töltse le a legújabb RGB565_video mintakódot: (nyomja meg a "Clone or Download" -> "Download ZIP" gombot)
github.com/moononournation/RGB565_video
SD kártya adatai
Másolja át az átalakított fájlokat SD -kártyára, és helyezze be az LCD -kártya foglalatába
Fordítás és feltöltés
- Az SDMMC_MJPEG_video_PCM_audio_dualSPI_multitask.ino megnyitása az Arduino IDE -ben
- Ha nem az ILI9225 -öt használja, módosítsa az új osztálykódot (a 35. sor körül) a helyes osztálynévre
- Nyomja meg az Arduino IDE „Feltöltés” gombot
- Ha nem sikerült feltölteni a programot, próbálja meg leválasztani a kapcsolatot az ESP32 GPIO 2 és az SD D0/MISO között
- Ha úgy találja, hogy a tájolás nem megfelelő, módosítsa a "forgás" értéket (0-3) az új osztálykódban
- Ha a program jól fut, kipróbálhat egy másik mintaindítást SDMMC_* -vel
- Ha nincs SD -kártyahelye, vagy nincs telepítve az FFmpeg, akkor is megpróbálhatja a SPIFFS_* példát
9. lépés: benchmark
Íme a különböző videó (220x176) és audio (44100 MHz) formátum teljesítményének összefoglalója:
Formátum | Képkocka másodpercenként (fps) |
MJPEG + PCM | 30 |
15 | |
RGB565 + PCM | 9 |
MJPEG + MP3 | 24 |
Jegyzet:
- Az MJPEG + PCM képes elérni a magasabb képkocka / s sebességet, de szükségtelen lejátszás egy 30 kép / mp -nél nagyobb apró képernyőn
- Az RGB565 nem igényel dekódolási folyamatot, de az adatméret túl nagy, és sok időbe telik az adatok SD-ről, 4 bites SD buszról és gyorsabb SD-kártyáról történő betöltése, ez egy kicsit javíthat (a vad találgatás akár 12 kép / mp-t is elérhet)
- Az MP3 dekódolási folyamat még nincs optimalizálva, most a 0 magot szenteli az MP3 dekódolásnak, és az 1 -et a videó lejátszásához
10. lépés: Jó játékot
Most már lejátszhat videót és hangot az ESP32 készülékével, amely számos lehetőséget nyitott meg!
Azt hiszem, később csinálok egy apró szüreti tévét …
Ajánlott:
Beszélő Arduino - MP3 lejátszása Arduino -val modul nélkül - MP3 fájl lejátszása Arduino -ból PCM használatával: 6 lépés
Beszélő Arduino | MP3 lejátszása Arduino -val modul nélkül | Mp3 fájl lejátszása az Arduino -ból PCM használatával: Ebben az utasításban megtanuljuk, hogyan kell lejátszani egy mp3 fájlt arduino -val audio modul használata nélkül, itt a PCM könyvtárat fogjuk használni az Arduino számára, amely 16 bites 8 kHz -es PCM -et játszik le
Zeneszámok lejátszása Arduino segítségével az ADC - PWM használatával a Flyback Transformeren vagy hangszórón: 4 lépés
Zeneszámok lejátszása Arduino -val az ADC használatával a PWM -hez a Flyback Transformeren vagy hangszórón: Helló srácok, Ez a második része a másik tanulhatónak (ez nagyon nehéz volt). Alapvetően ebben a projektben az ADC -t és az időzítőt használtam az Arduino -n konvertálja az audiojelet PWM jellé. Ez sokkal könnyebb, mint az előző utasításom
Zeneszámok lejátszása (MP3) Arduino segítségével PWM használatával hangszórón vagy Flyback Transformeren: 6 lépés (képekkel)
Zeneszámok lejátszása (MP3) Arduino segítségével PWM használata hangszórón vagy Flyback Transformeren: Hello Srácok, Ez az első tanítható, remélem tetszeni fog! Alapvetően ebben a projektben az Arduino és a laptopom közötti soros kommunikációt használtam, hogy zenei adatokat továbbítsak a laptopomról az Arduino -hoz. És az Arduino TIMERS t használatával
Zene lejátszása Arduino segítségével!: 5 lépés (képekkel)
Zene lejátszása Arduino -val!: Ebben az oktatóanyagban megmutatom, hogyan játszok zenét egy Arduino UNO és egy SD kártya modul segítségével. Az SPI kommunikációt fogjuk használni. Kezdjük
Dalok lejátszása a léptetőmotor segítségével !!: 11 lépés (képekkel)
Zeneszámok lejátszása léptetőmotor segítségével !!: Ez a projekt egy egyszerű, dinamikus felület kialakításáról szól, amely lehetővé teszi, hogy két különböző módon lépjen kapcsolatba a léptetőmotorral. Az első kezelőfelület vezérli a léptetőmotor irányát és sebességét egyszerű GUI, amely h