Përmbajtje:
- Hapi 1: Karakteristikat dhe Kufizimet ESP32
- Hapi 2: Formati i videos
- Hapi 3: Formati i audios
- Hapi 4: Konvertimi i formatit
- Hapi 5: Përgatitja e harduerit
- Hapi 6: Ndërfaqja SD
- Hapi 7: Vendoseni së bashku
- Hapi 8: Programi
- Hapi 9: Referimi
- Hapi 10: Luani me kënaqësi
Video: Luani video me ESP32: 10 hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-31 10:25
Ky udhëzues tregon diçka në lidhje me luajtjen e videos dhe zërit me ESP32.
Hapi 1: Karakteristikat dhe Kufizimet ESP32
Karakteristikat
- 4 autobus SPI, 2 autobus SPI të disponueshëm për hapësirën e përdoruesit, ato janë SPI2 dhe SPI3 ose quhen HSPI dhe VSPI. Të dy autobusët SPI mund të funksionojnë më së shumti 80 MHz. Teorikisht mund të shtyjë pixel me ngjyra 320x240 16-bit në SPI LCD me 60 fps, por ende nuk e ka llogaritur kohën e nevojshme për leximin dhe deshifrimin e të dhënave video.
- Autobusi SD 1-bit / 4-bit mund të lidhë kartën SD në protokollin amë
- Dalja audio e brendshme DAC I2S
- mbi 100 KB RAM në dispozicion për tampon video dhe audio
- Fuqi mjaft e drejtë përpunimi për të deshifruar JPEG (luaj Motion JPEG) dhe kompresim të të dhënave LZW (luaj-g.webp" />
- Versioni me dy bërthama mund të ndajë të dhënat e lexuara nga karta SD, të deshifrojë dhe shtyjë në SPI LCD në shumë detyra paralele dhe të rrisë performancën e riprodhimit
Kufizimet
- RAM i brendshëm i pamjaftueshëm për të pasur tampon me kornizë të dyfishtë për 320x240 në ngjyrë 16-bit, ai kufizoi modelin e shumë detyrave. Mund të kapërcejë pak me PSRAM të jashtëm edhe pse është më i ngadalshëm se RAM i brendshëm
- nuk ka fuqi të mjaftueshme përpunuese për të deshifruar video mp4
- jo të gjitha versionet ESP32 kanë 2 bërthama, mostra me shumë detyra përfiton vetëm në versionin me dy bërthama
Ref.:
Hapi 2: Formati i videos
RGB565
Ose e quajtur ngjyra 16-bit është një format i papërpunuar i të dhënave që përdoret zakonisht në komunikimin midis MCU dhe ekranit me ngjyra. Çdo piksel ngjyrash përfaqësohet nga një vlerë 16-bit, 5-biti i parë është vlera e kuqe, pas 6-bitësh është vlera e gjelbër dhe më pas vlera blu 5-bit. Vlera 16-bit mund të bëjë 65536 ndryshim ngjyrash, kështu që quhet edhe ngjyra 64K. Pra, 1 minutë 320x240@30 fps video do të ketë madhësi: 16 * 320 * 240 * 30 * 60 = 2211840000 bit = 276480000 bajt ose mbi 260 MB
Ky është një format i zakonshëm skedar në internet që nga vitet 1990. Ai kufizon ndryshimin e ngjyrave për secilin ekran deri në 256 ngjyra dhe nuk e përsërit ruajtjen e pikselit në të njëjtën ngjyrë si korniza e mëparshme. Kështu që mund të zvogëlojë shumë madhësinë e skedarit, veçanërisht kur çdo kornizë animacioni nuk ndryshon shumë detaje. Kompresimi LZW është projektuar i aftë të deshifrojë nga kompjuteri i viteve 1990, kështu që ESP32 gjithashtu ka fuqi të mjaftueshme përpunuese për ta deshifruar atë në kohë reale.
Lëvizja JPEG
Ose i quajtur M-JPEG / MJPEG është një format i zakonshëm i kompresimit të videove për pajisjet e regjistrimit të videos me fuqi të kufizuar përpunimi. Në fakt është thjesht një bashkim i kornizave ende JPEG. Krahasoni me MPEG ose MP4, Motion JPEG nuk ka nevojë për teknikë llogaritëse intensive të parashikimit ndërkufitar, çdo kornizë është e pavarur. Kështu që kërkon më pak burime për të koduar dhe deshifruar.
Ref.:
en.wikipedia.org/wiki/List_of_monochrome_a…
en.wikipedia.org/wiki/GIF
en.wikipedia.org/wiki/Motion_JPEG
Hapi 3: Formati i audios
PCM
Një format i papërpunuar i të dhënave për audio dixhitale. ESP32 DAC përdor thellësi 16-bit, që do të thotë se çdo e dhënë 16-bit përfaqëson një sinjal analog të mostrës dixhitale. Shumica e audios video dhe këngë zakonisht përdorin normën e mostrës në 44100 MHz, që do të thotë 44100 sinjal analog të mostrës për çdo sekondë. Pra, 1 minutë të dhëna mono audio PCM të papërpunuara do të kenë madhësi: 16 * 44100 * 60 = 42336000 bit = 5292000 byte ose mbi 5 MB. Madhësia e audios stereo do të jetë e dyfishtë, pra mbi 10 MB
MP3
MPEG Layer 3 është një format audio i ngjeshur i përdorur gjerësisht për kompresimin e këngëve që nga vitet 1990. Mund të zvogëlojë në mënyrë dramatike madhësinë e skedarit në nën një të dhjetën e formatit të papërpunuar PCM
Ref.:
en.wikipedia.org/wiki/Pulse-code_modulatio…
en.wikipedia.org/wiki/MP3
Hapi 4: Konvertimi i formatit
Ky projekt përdor FFmpeg për ta kthyer videon në format ESP32 të lexueshëm.
Ju lutemi shkarkoni dhe instaloni FFmpeg në faqen e tyre zyrtare nëse jo akoma:
Ktheni në audio PCM
ffmpeg -i input.mp4 -f u16be -acodec pcm_u16le -ar 44100 -ac 1 44100_u16le.pcm
Ktheni në audio MP3
ffmpeg -i input.mp4 -ar 44100 -ac 1 -q: a 9 44100.mp3
Shndërrohuni në RGB565
ffmpeg -i input.mp4 -vf "fps = 9, shkalla = -1: 176: flamujt = lanczos, kulture = 220: in_h: (in_w -220)/2: 0" -c: v rawvideo -pix_fmt rgb565be 220_9fps rgb
Shndërrohuni në-g.webp
ffmpeg -i input.mp4 -vf "fps = 15, shkallë = -1: 176: flamuj = lanczos, kulture = 220: in_h: (in_w -220)/2: 0, ndarë [s0] [s1]; [s0] palettegen [p]; [s1] [p] paletteuse "-loop -1 220_15fps.gif
Shndërrohuni në Motion JPEG
ffmpeg -i input.mp4 -vf "fps = 30, shkallë = -1: 176: flamuj = lanczos, kulture = 220: in_h: (in_w -220)/2: 0" -q: v 9 220_30fps.mjpeg
Shënim:
GF e animuar e konvertuar nga FFmpeg mund të optimizohet më tej nga disa vegla në internet, mund të kërkoni optimizuesin-g.webp" />
Hapi 5: Përgatitja e harduerit
ESP32 Bordi i Zhvillimit
Çdo bord me dy bërthama ESP32 dev duhet të jetë në rregull, këtë herë unë jam duke përdorur një TTGO ESP32-Micro.
Ekran me ngjyra
Çdo ekran me ngjyra që mbështet Arduino_GFX duhet të jetë në rregull, këtë herë unë jam duke përdorur një tabelë shpërthimi ILI9225 me fole për kartën SD.
Listën e shfaqjes së ngjyrave të mbështetur nga Arduino_GFX mund ta gjeni në Github:
github.com/moononournation/Arduino_GFX
Kartë SD
Çdo kartë SD duhet të jetë në rregull, këtë herë unë jam duke përdorur një SanDisk "shpejtësi normale" 8 GB micro SD me përshtatës SD.
Audio
Nëse doni të përdorni vetëm kufje, thjesht lidhni kunjat e kufjeve në pin 26 dhe GND mund të dëgjojë tingullin. Ose mund të përdorni një përforcues të vogël për të luajtur audio me altoparlantin.
Të tjerët
Disa dërrasa buke dhe tela të bukës
Hapi 6: Ndërfaqja SD
Bordi i shpërthimit ILI9225 LCD gjithashtu përfshinte një kunj të shpërthimit të slot SD crd. Mund të përdoret si autobus SPI ose autobus SD 1-bit. Siç u përmend në udhëzimet e mia të mëparshme, unë preferoj të përdor autobus SD 1-bit, kështu që ky projekt do të bazohet në autobus 1-bit SD.
Hapi 7: Vendoseni së bashku
Fotografitë e mësipërme tregojnë platformën e testimit që po përdor në këtë projekt. Tabela e bardhë e bukës është e printuar 3D, mund ta shkarkoni dhe printoni në thingiverse:
Lidhja aktuale varet nga ajo pajisje që keni në dorë.
Këtu janë përmbledhjet e lidhjes:
ESP32
Vcc -> LCD Vcc GND -> LCD GND GPIO 2 -> SD D0/MISO -> 1k rezistencë -> 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
Ref.:
Hapi 8: Programi
Arduino IDE
Shkarkoni dhe instaloni Arduino IDE nëse nuk e keni bërë ende:
www.arduino.cc/en/main/software
Mbështetje ESP32
Ndiqni Udhëzimet e Instalimit për të shtuar mbështetjen ESP32 nëse nuk e keni bërë ende:
github.com/espressif/arduino-esp32
Biblioteka Arduino_GFX
Shkarkoni bibliotekat më të fundit të Arduino_GFX: (shtypni "Clone or Download" -> "Download ZIP")
github.com/moononournation/Arduino_GFX
Importoni biblioteka në Arduino IDE. (Menyja Arduino IDE "Sketch" -> "Përfshi Bibliotekën" -> "Shto Bibliotekën. ZIP" -> zgjidhni skedarin ZIP të shkarkuar)
ESP8266Audioja
Shkarkoni bibliotekat më të fundit ESP8266Audio: (shtypni "Clone or Download" -> "Download ZIP")
github.com/earlephilhower/ESP8266Audio
Importoni biblioteka në Arduino IDE. (Menyja Arduino IDE "Sketch" -> "Përfshi Bibliotekën" -> "Shto Bibliotekën. ZIP" -> zgjidhni skedarin ZIP të shkarkuar)
Kodi Shembull i RGB565_video
Shkarkoni kodin më të fundit RGB565_video: (shtypni "Clone or Download" -> "Download ZIP")
github.com/moononournation/RGB565_video
Të dhënat e kartës SD
Kopjoni skedarët e konvertuar në kartën SD dhe futeni në folenë e kartës LCD
Përpilo & Ngarko
- Hap SDMMC_MJPEG_video_PCM_audio_dualSPI_multitask.ino në Arduino IDE
- Nëse nuk jeni duke përdorur ILI9225, ndryshoni kodin e ri të klasës (rreth rreshtit 35) për të korrigjuar emrin e klasës
- Shtypni butonin Arduino IDE "Ngarko"
- Nëse nuk keni arritur të ngarkoni programin, provoni të shkëputni lidhjen midis ESP32 GPIO 2 dhe SD D0/MISO
- Nëse e gjeni orientimin jo të saktë, ndryshoni vlerën e "rrotullimit" (0-3) në kodin e ri të klasës
- Nëse programi funksionon mirë, mund të provoni fillimin e mostrës tjetër me SDMMC_*
- Nëse nuk keni slot për kartën SD ose nuk keni FFmpeg të instaluar, prapë mund të provoni shembullin SPIFFS_*
Hapi 9: Referimi
Këtu janë përmbledhjet e performancës për format të ndryshëm video (220x176) dhe audio (44100 MHz):
Format | Korniza për sekondë (fps) |
MJPEG + PCM | 30 |
15 | |
RGB565 + PCM | 9 |
MJPEG + MP3 | 24 |
Shënim:
- MJPEG + PCM mund të arrijë fps më të larta, por është lojë e panevojshme në një ekran të vogël më të madh se 30 fps
- RGB565 nuk kërkon dekodim, por madhësia e të dhënave është shumë e madhe dhe konsumon shumë kohë për ngarkimin e të dhënave nga SD, autobusi SD 4-bit dhe karta SD më e shpejtë mund ta përmirësojë atë pak (supozimi i egër mund të arrijë rreth 12 fps)
- Procesi i deshifrimit MP3 ende nuk është optimizuar, tani i dedikohet bërthamës 0 për deshifrim MP3 dhe bërthamës 1 për të luajtur video
Hapi 10: Luani me kënaqësi
Tani mund të luani video dhe audio me ESP32 tuaj, ai hapi shumë mundësi!
Unë mendoj se do të bëj një TV të vogël të cilësisë së mirë më vonë…
Recommended:
Si të rregulloni një prizë dhe luani radio satelitore .: 6 hapa
Si të rregulloni një Radio Satellite Plug and Play .: Para se të filloni, do të duhet të përcaktoni vendndodhjen më të mirë për të montuar radion satelitore në pultin ose kolonën tuaj, dhe ju ’ do t'ju duhet një drejtues foleje, kaçavidë dhe prerës teli
Si të luani një këngë në Yamaha tuaj EZ-220: 5 hapa
Si të luani një këngë në Yamaha tuaj EZ-220: Këto hapa do t'ju ndihmojnë të luani këngën tuaj duke përdorur librin e këngëve
Luani lojën Simon në këmishën tuaj: 5 hapa
Luani lojën Simon në këmishën tuaj: A keni dashur gjithmonë të luani lojën Simon në këmishën tuaj? Edhe unë! Në këtë udhëzues, unë do t'ju tregoj se si të bëni një version të lojës Simon që mund të luani duke prekur këmishën tuaj, duke përdorur një Makey Makey
Si të luani Robot të ngathët në udhëzues .: 5 hapa (me fotografi)
Si të luani Robot të ngathët në Instructables .: Nëse jeni me fat (ose pa fat) sa të gjeni veten duke u përballur me mesazhin e gabimit të serverit udhëzues, argëtohuni pak me të. Loja që është ngulitur në të është njësoj si zogu flappy vetëm me robotin udhëzues dhe çelësat. Në këtë unë
Luani Video Prapa Duke Përdorur Quicktime Player: 5 Hapa
Luani Video Prapa Duke Përdorur Quicktime Player: Ky është truku më i tmerrshëm i shekullit. Ky Instructable ju tregon mënyrën e lehtë për të luajtur video mbrapsht pa shkarkuar programe të dyshimta (nëse nuk keni kohë të shpejtë do t'ju duhet.) Imazhi nuk ka asgjë për të bëj me projektin por më duhej