2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-23 14:47
Reproducirajte video zapis s ESP32
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:
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
SD sučeljeSD 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
Sastavite toSastavite toSastavite 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.
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
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
Sretna igra!
Sada možete reproducirati video i audio sa svojim ESP32, otključao je mnoge mogućnosti!
Mislim da ću kasnije napraviti mali vintage televizor …
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 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: Ž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 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. 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