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: Sastavite to
- Korak 8: Program
- Korak 9: Mjerilo
- Korak 10: Sretno igranje
Video: Reproducirajte video zapis s ESP32: 10 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-31 10:20
Ove upute pokazuju nešto o reprodukciji videa i zvuka s ESP32.
Korak 1: Značajke i ograničenja ESP32
Značajke
- 4 SPI sabirnice, 2 SPI sabirnice dostupne za korisnički prostor, one su SPI2 i SPI3 ili se nazivaju 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 spojiti SD karticu u izvornom protokolu
- I2S interni DAC audio izlaz
- više od 100 KB RAM -a dostupno za video i audio međuspremnik
- 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 te 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 pomalo prevladati s vanjskim PSRAM -om iako je sporiji od unutarnjeg RAM -a
- nema dovoljno procesorske snage za dekodiranje mp4 videa
- nemaju sve verzije ESP32 dvije jezgre, uzorak s više zadataka koristi samo na dvojezgrenoj verziji
Ref.:
Korak 2: Video format
RGB565
Ili nazvana 16-bitna boja, sirovi je format podataka koji se obično koristi za komunikaciju između MCU-a i zaslona 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 zaslon do 256 boja i ne ponavlja se, pohranite piksel u istoj boji kao prethodni okvir. Dakle, može znatno smanjiti veličinu datoteke, osobito ako svaki okvir animacije ne promijeni previše detalja. LZW kompresija dizajnirana je za dekodiranje od strane računala iz 1990 -ih, pa ESP32 također ima dovoljno poštene procesorske snage za dekodiranje u stvarnom vremenu.
Motion JPEG
Ili nazvan M-JPEG / MJPEG uobičajeni je format kompresije videa za hardver za snimanje videa s ograničenom procesorskom snagom. To je zapravo jednostavno spajanje mirnih JPEG okvira. Usporedite s MPEG -om ili MP4 -om, Motion JPEG nema potrebe za računalno intenzivnom tehnikom među kadarnog predviđanja, svaki je kadar neovisan. 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 video zapisa i zvukova 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 projekt koristi FFmpeg pretvoriti video u ESP32 čitljiv format.
Molimo preuzmite i instalirajte FFmpeg na njihovu službenu stranicu ako još nije dostupna:
Pretvorite u PCM audio
ffmpeg -i ulaz.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: flags = lanczos, crop = 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, scale = -1: 176: zastavice = lanczos, obrezivanje = 220: in_h: (in_w -220)/2: 0, split [s0] [s1]; [s0] palettegen [p]; [s1] [p] paletteuse "-loop -1 220_15fps.gif
Pretvori u Motion JPEG
ffmpeg -i input.mp4 -vf "fps = 30, scale = -1: 176: zastavice = lanczos, obrezivanje = 220: in_h: (in_w -220)/2: 0" -q: v 9 220_30fps.mjpeg
Bilješka:
Animirani-g.webp" />
Korak 5: Priprema hardvera
ESP32 ploča za razvoj
Bilo koja dvojezgrena ESP32 ploča za razvoj trebala bi biti u redu, ovaj put koristim TTGO ESP32-Micro.
Zaslon 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 "normalne brzine" 8 GB micro SD 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 ploče i žice
Korak 6: SD sučelje
ILI9225 LCD razvodna ploča 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, radije koristim 1-bitnu SD sabirnicu, pa će se ovaj projekt temeljiti na 1-bitnoj SD sabirnici.
Korak 7: Sastavite to
Gornje slike prikazuju platformu za testiranje koju koristim u ovom projektu. Bijela ploča je 3D ispisana, 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
Knjižnica Arduino_GFX
Preuzmite najnovije Arduino_GFX knjižnice: (pritisnite "Kloniraj ili preuzmi" -> "Preuzmi ZIP")
github.com/moononournation/Arduino_GFX
Uvezite knjižnice u Arduino IDE. (Arduino IDE "Sketch" izbornik -> "Uključi biblioteku" -> "Dodaj. ZIP knjižnicu" -> odaberite preuzetu ZIP datoteku)
ESP8266Audio
Preuzmite najnovije ESP8266Audio biblioteke: (pritisnite "Kloniraj ili preuzmi" -> "Preuzmi ZIP")
github.com/earlephilhower/ESP8266Audio
Uvezite knjižnice u Arduino IDE. (Arduino IDE "Sketch" izbornik -> "Uključi knjižnicu" -> "Dodaj. ZIP knjižnicu" -> odaberite preuzetu ZIP datoteku)
RGB565_video Uzorak koda
Preuzmite najnoviji uzorak koda RGB565_video: (pritisnite "Kloniraj ili preuzmi" -> "Preuzmi ZIP")
github.com/moononournation/RGB565_video
Podaci SD kartice
Kopirajte pretvorene datoteke na SD karticu i umetnite ih u utor za LCD karticu
Kompilacija i prijenos
- Otvorite SDMMC_MJPEG_video_PCM_audio_dualSPI_multitask.ino u Arduino IDE
- Ako ne koristite ILI9225, promijenite novi kôd razreda (oko retka 35) kako biste ispravili naziv klase
- Pritisnite Arduino IDE gumb "Upload"
- Ako niste uspjeli prenijeti program, pokušajte prekinuti vezu između ESP32 GPIO 2 i SD D0/MISO
- Ako smatrate da orijentacija nije točna, promijenite vrijednost "rotacije" (0-3) u novom kodu klase
- Ako se program dobro pokreće, možete isprobati drugi uzorak početka sa SDMMC_*
- Ako nemate utor za SD karticu ili nemate instaliran FFmpeg, još uvijek možete isprobati primjer SPIFFS_*
Korak 9: Mjerilo
Evo sažetka izvedbe za različite video (220x176) i audio (44100 MHz) formate:
Format | Okvir 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 igrati na malom ekranu većem od 30 fps
- RGB565 ne zahtijeva postupak dekodiranja, ali je veličina podataka prevelika i puno se vremena troši pri učitavanju podataka sa SD-a, 4-bitne SD sabirnice i brže SD kartice može je malo poboljšati (za pretpostavku je da može doseći oko 12 fps)
- Postupak 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čao je mnoge mogućnosti!
Mislim da ću kasnije napraviti mali vintage televizor …
Preporučeni:
Reproducirajte pjesme (MP3) s Arduinom pomoću PWM -a na zvučniku ili Flyback transformatoru: 6 koraka (sa slikama)
Reproducirajte pjesme (MP3) s Arduinom pomoću PWM -a na zvučniku ili Flyback transformatoru: Zdravo dečki, ovo je moje prvo uputstvo, nadam se da će vam se svidjeti !! U osnovi, u ovom projektu koristio sam serijsku komunikaciju između svog Arduina i prijenosnog računala, za prijenos glazbenih podataka s prijenosnog računala na Arduino. A pomoću Arduino TIMERS t
Kako napraviti video zapis s vremenskim odmakom: 7 koraka
Kako snimiti video s vremenskim odmakom: U ovom Instructableu ću detaljno opisati korake koje koristim za snimanje video zapisa s vremenskim odmakom. Sustav i hardver koji koristim za dobivanje slika je Linux računalo i mrežna IP kamera. Skripta se izvodi na Linux računalu 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 kopiranje 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 aplikaciju za Android
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 upute o tome kako pretvoriti svoje iPod Mini i 4G iPod -ove u CF i pitali se možete li isto učiniti s iPod Video. Pa možete! Napomena: Neke su upute vrlo slične (ako ne i iste) kao ostale
Video zapis velike brzine za početnike .: 6 koraka (sa slikama)
Video zapis velike brzine za početnike. Svi koje sam upoznao i razgovarao dijele jedno zajedničko: želju za posjedovanjem ili barem igranjem kamerom velike brzine. Iako sumnjam da mnogi ljudi koji ovo čitaju imaju vlastitu kameru velike brzine, želja mi je da nekolicina koji