Sadržaj:
- Korak 1: Značajke i ograničenja ESP32
- Korak 2: Video format
- Korak 3: Audio format
- Korak 4: Pretvorba formata
- Korak 5: Priprema hardvera
- Korak 6: SD sučelje
- Korak 7: Spojite to zajedno
- Korak 8: Program
- Korak 9: Mjerenje performansi
- Korak 10: Sretno igranje
Video: Reproducirajte video zapis sa ESP32: 10 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-31 10:17
Ove upute pokazuju nešto o reprodukciji videa i zvuka s ESP32.
Korak 1: Značajke i ograničenja ESP32
Karakteristike
- 4 SPI sabirnice, 2 SPI sabirnice dostupne za korisnički prostor, one su SPI2 i SPI3 ili se zovu HSPI i VSPI. Obje SPI sabirnice mogu raditi najviše 80 MHz. Teoretski, može gurnuti 320x240 16-bitne piksele u boji na SPI LCD pri 60 fps, ali još nije računao vrijeme potrebno za čitanje i dekodiranje video podataka.
- 1-bitna / 4-bitna SD sabirnica može povezati SD karticu u izvornom protokolu
- I2S interni DAC audio izlaz
- više od 100 KB RAM -a dostupno za video i audio bafer
- Dovoljno poštena procesorska snaga za dekodiranje JPEG -a (reprodukcija Motion JPEG -a) i LZW kompresije podataka (reprodukcija animiranog-g.webp" />
- Dvojezgrena verzija može podijeliti pročitane podatke sa SD kartice, dekodirati i pritisnuti na SPI LCD u paralelne više zadataka i povećati performanse reprodukcije
Ograničenja
- nema dovoljno interne memorije da ima međuspremnik s dvostrukim okvirom za 320x240 u 16-bitnoj boji, to je ograničilo dizajn više zadataka. Može prevazići malo s vanjskim PSRAM -om iako je sporiji od unutrašnjeg RAM -a
- nema dovoljno procesorske snage za dekodiranje mp4 videa
- nemaju sve verzije ESP32 2 jezgre, uzorak za više zadataka koristi samo na dvojezgrenoj verziji
Ref.:
Korak 2: Video format
RGB565
Ili nazvana 16-bitna boja je sirovi format podataka koji se obično koristi za komunikaciju između MCU-a i ekrana u boji. Svaki piksel u boji predstavljen je 16-bitnom vrijednošću, prvih 5-bitna je crvena vrijednost, slijedeća 6-bitna je zelena vrijednost, a zatim 5-bitna plava vrijednost. 16-bitna vrijednost može napraviti varijaciju boje 65536 pa se naziva i 64K boja. Tako će 1 minuta 320x240@30 fps videozapis biti veličine: 16 * 320 * 240 * 30 * 60 = 2211840000 bita = 276480000 bajtova ili više od 260 MB
Animirani GIF
Ovo je uobičajeni format datoteke na webu od 1990 -ih. Ograničava varijacije boja za svaki ekran do 256 boja i ne ponavlja ponavljanje u pikselu u istoj boji kao prethodni okvir. Dakle, može znatno smanjiti veličinu datoteke, posebno ako svaki okvir animacije ne promijeni previše detalja. LZW kompresija je dizajnirana za dekodiranje na računaru devedesetih godina prošlog vijeka, pa ESP32 takođe ima dovoljno fer procesorsku snagu da je dekodira u realnom vremenu.
Motion JPEG
Ili nazvan M-JPEG / MJPEG je uobičajeni format kompresije video zapisa za hardver za snimanje video zapisa s ograničenom procesorskom snagom. To je zapravo jednostavno spajanje mirnih JPEG okvira. U usporedbi s MPEG -om ili MP4 -om, Motion JPEG -u nije potrebna računski intenzivna tehnika međukartnog predviđanja, svaki kadar je nezavisan. Stoga je potrebno manje resursa za kodiranje i dekodiranje.
Ref.:
en.wikipedia.org/wiki/List_of_monochrome_a…
en.wikipedia.org/wiki/GIF
en.wikipedia.org/wiki/Motion_JPEG
Korak 3: Audio format
PCM
Sirovi format podataka za digitalni zvuk. ESP32 DAC koristi 16-bitnu dubinu bita, što znači da svaki 16-bitni podatak predstavlja digitalni uzorkovani analogni signal. Većina zvuka video zapisa i pjesama obično koristi frekvenciju uzorkovanja na 44100 MHz, što znači 44100 uzorkovanog analognog signala za svaku sekundu. Dakle, 1 minutni mono audio PCM sirovi podaci bit će veličine: 16 * 44100 * 60 = 42336000 bita = 5292000 bajtova ili više od 5 MB. Veličina stereo zvuka bit će dvostruka, odnosno preko 10 MB
MP3
MPEG Layer 3 je komprimirani audio format koji se široko koristi za kompresiju pjesama od 1990 -ih. Može dramatično smanjiti veličinu datoteke na manje od jedne desetine neobrađenog PCM formata
Ref.:
en.wikipedia.org/wiki/Pulse-code_modulatio…
en.wikipedia.org/wiki/MP3
Korak 4: Pretvorba formata
Ovaj projekat koristi FFmpeg za pretvaranje video zapisa u format čitljiv ESP32.
Molimo vas da preuzmete i instalirate FFmpeg na njihovom službenom web mjestu ako još niste:
Pretvorite u PCM audio
ffmpeg -i input.mp4 -f u16be -acodec pcm_u16le -ar 44100 -ac 1 44100_u16le.pcm
Pretvorite u MP3 zvuk
ffmpeg -i ulaz.mp4 -ar 44100 -ac 1 -q: a 9 44100.mp3
Pretvorite u RGB565
ffmpeg -i input.mp4 -vf "fps = 9, scale = -1: 176: zastavice = lanczos, obrezivanje = 220: in_h: (in_w -220)/2: 0" -c: v rawvideo -pix_fmt rgb565be 220_9fps. rgb
Pretvori u animirani GIF
ffmpeg -i input.mp4 -vf "fps = 15, razmjer = -1: 176: zastave = lanczos, obrezivanje = 220: in_h: (in_w -220)/2: 0, podijeljeno [s0] [s1]; [s0] palettegen [p]; [s1] [p] paletteuse "-loop -1 220_15fps.gif
Pretvori u Motion JPEG
ffmpeg -i input.mp4 -vf "fps = 30, razmjer = -1: 176: zastave = lanczos, obrezivanje = 220: in_h: (in_w -220)/2: 0" -q: v 9 220_30fps.mjpeg
Bilješka:
FFmpeg konvertirani animirani-g.webp" />
Korak 5: Priprema hardvera
ESP32 Dev Board
Bilo koja dvojezgrena ESP32 dev ploča trebala bi biti u redu, ovaj put koristim TTGO ESP32-Micro.
Prikaz u boji
Bilo koji zaslon u boji koji Arduino_GFX podržava trebao bi biti u redu, ovaj put koristim ILI9225 probojnu ploču sa utorom za SD karticu.
Popis boja u boji koji podržava Arduino_GFX možete pronaći na Githubu:
github.com/moononournation/Arduino_GFX
Sd kartica
Bilo koja SD kartica bi trebala biti u redu, ovaj put koristim SanDisk micro SD sa normalnom brzinom od 8 GB sa SD adapterom.
Audio
Ako želite koristiti samo slušalice, jednostavno spojite iglice slušalica na pin 26 i GND može slušati zvuk. Ili možete koristiti maleno pojačalo za reprodukciju zvuka sa zvučnikom.
Drugi
Neke matične ploče i žice za matične ploče
Korak 6: SD sučelje
ILI9225 LCD ploča za probijanje također uključuje igle za probijanje SD crd utora. Može se koristiti kao SPI sabirnica ili 1-bitna SD sabirnica. Kao što je spomenuto u mojim prethodnim uputama, više volim koristiti 1-bitnu SD sabirnicu, pa će se ovaj projekt temeljiti na 1-bitnoj SD sabirnici.
Korak 7: Spojite to zajedno
Gornje slike prikazuju platformu za testiranje koju koristim u ovom projektu. Bijela ploča je 3D štampana, možete je preuzeti i ispisati na thingiverse:
Stvarna veza ovisi o tome koji hardver imate pri ruci.
Evo sažetka veze:
ESP32
Vcc -> LCD Vcc GND -> LCD GND GPIO 2 -> SD D0/MISO -> 1k otpornik -> 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.:
Korak 8: Program
Arduino IDE
Preuzmite i instalirajte Arduino IDE ako to još niste učinili:
www.arduino.cc/en/main/software
Podrška za ESP32
Slijedite upute za instalaciju da biste dodali podršku za ESP32 ako to još niste učinili:
github.com/espressif/arduino-esp32
Arduino_GFX biblioteka
Preuzmite najnovije Arduino_GFX biblioteke: (pritisnite "Kloniraj ili preuzmi" -> "Preuzmi ZIP")
github.com/moononournation/Arduino_GFX
Uvezite biblioteke u Arduino IDE. (Arduino IDE "Sketch" meni -> "Uključi biblioteku" -> "Dodaj. ZIP biblioteku" -> odaberite preuzetu ZIP datoteku)
ESP8266Audio
Preuzmite najnovije ESP8266Audio biblioteke: (pritisnite "Kloniraj ili preuzmi" -> "Preuzmi ZIP")
github.com/earlephilhower/ESP8266Audio
Uvezite biblioteke u Arduino IDE. (Arduino IDE "Sketch" meni -> "Uključi biblioteku" -> "Dodaj. ZIP biblioteku" -> odaberite preuzetu ZIP datoteku)
RGB565_video Primjer koda
Preuzmite najnoviji uzorak koda RGB565_video: (pritisnite "Kloniraj ili preuzmi" -> "Preuzmi ZIP")
github.com/moononournation/RGB565_video
Podaci sa SD kartice
Kopirajte konvertirane datoteke na SD karticu i umetnite ih u utor za LCD karticu
Sastavi i otpremi
- Otvorite SDMMC_MJPEG_video_PCM_audio_dualSPI_multitask.ino u Arduino IDE
- Ako ne koristite ILI9225, promijenite novi kôd klase (oko reda 35) kako biste ispravili naziv klase
- Pritisnite Arduino IDE dugme "Upload"
- Ako niste uspjeli učitati program, pokušajte prekinuti vezu između ESP32 GPIO 2 i SD D0/MISO
- Ako smatrate da orijentacija nije ispravna, promijenite vrijednost "rotacije" (0-3) u novom kodu klase
- Ako se program dobro pokreće, možete isprobati drugi primjer početka sa SDMMC_*
- Ako nemate utor za SD karticu ili nemate instaliran FFmpeg, još uvijek možete isprobati primjer SPIFFS_*
Korak 9: Mjerenje performansi
Evo sažetka performansi za različite video (220x176) i audio (44100 MHz) formate:
Format | Broj kadrova u sekundi (fps) |
MJPEG + PCM | 30 |
15 | |
RGB565 + PCM | 9 |
MJPEG + MP3 | 24 |
Bilješka:
- MJPEG + PCM može doseći veće fps, ali nije potrebno reproducirati na malom ekranu većem od 30 fps
- RGB565 ne zahtijeva postupak dekodiranja, ali je veličina podataka prevelika i potrebno je puno vremena za učitavanje podataka sa SD-a, 4-bitne SD sabirnice i brže SD kartice mogu je malo poboljšati (za pretpostavku je da može doseći oko 12 fps)
- Proces dekodiranja MP3 -a još nije optimiziran, sada je posvećen jezgri 0 za dekodiranje MP3 -a i jezgri 1 za reprodukciju videa
Korak 10: Sretno igranje
Sada možete reproducirati video i audio sa svojim ESP32, otključalo je mnoge mogućnosti!
Mislim da ću kasnije napraviti mali vintage TV …
Preporučuje se:
Reproducirajte pjesme (MP3) s Arduinom pomoću PWM -a na zvučniku ili Flyback transformatoru: 6 koraka (sa slikama)
Reproducirajte pjesme (MP3) s Arduinom koristeći PWM na zvučniku ili Flyback transformatoru: Zdravo momci, ovo je moje prvo uputstvo, nadam se da će vam se svidjeti !! U osnovi, u ovom projektu sam koristio serijsku komunikaciju između mog Arduina i prijenosnog računala, za prenos muzičkih podataka sa mog laptopa na Arduino. A pomoću Arduino TIMERS t
Kako napraviti video zapis s ubrzanjem: 7 koraka
Kako napraviti Time Lapse video: U ovom uputstvu ću detaljno opisati korake koje koristim za snimanje time lapse videa. Sistem i hardver koji koristim za dobijanje slika su Linux računar i IP kamera zasnovana na mreži. Skripta se izvodi na Linux računaru i svakih x sekundi ispituje t
Reproducirajte CD -ove bez CD playera, koristeći AI i YouTube: 10 koraka (sa slikama)
Reproducirajte CD -ove bez CD playera, koristeći AI i YouTube: Želite li reproducirati svoje CD -ove, ali nemate više CD player? Niste imali vremena za snimanje CD -ova? Izrezali ste ih, ali datoteke nisu dostupne po potrebi? Nema problema. Neka AI (umjetna inteligencija) identificira vaš CD, a YouTube ga pusti! Napisao sam Android aplikaciju
Pretvorite svoj IPod video zapis pete generacije u Flash memoriju!: 6 koraka (sa slikama)
Pretvorite svoj iPod iPod video zapis pete generacije u Flash memoriju !: Možda ste vidjeli moje druge instrukcije o tome kako pretvoriti svoje iPod Mini i 4G iPod -ove u CF i pitali se možete li to učiniti i sa iPod Video. Pa možete! Napomena: Neka uputstva su vrlo slična (ako ne i ista) kao druga
Video zapis velike brzine za početnike .: 6 koraka (sa slikama)
Video zapis velike brzine za početnike. Svi koje sam sreo i razgovarao dijele jednu zajedničku stvar: želju za posjedovanjem ili barem igranjem kamerom velike brzine. Iako sumnjam da mnogi ljudi koji ovo čitaju imaju vlastitu kameru velike brzine, želim da nekolicina koji