Satura rādītājs:
- 1. darbība: ESP32 funkcijas un ierobežojumi
- 2. darbība: video formāts
- 3. darbība: audio formāts
- 4. darbība: konvertēšanas formāts
- 5. solis: aparatūras sagatavošana
- 6. darbība: SD saskarne
- 7. solis: salieciet to kopā
- 8. solis: programma
- 9. solis: etalons
- 10. solis: laimīgu spēli
Video: Video atskaņošana ar ESP32: 10 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-31 10:22
Šī instrukcija parāda kaut ko par video un audio atskaņošanu, izmantojot ESP32.
1. darbība: ESP32 funkcijas un ierobežojumi
Iespējas
- 4 SPI kopnes, 2 SPI kopnes, kas pieejamas lietotāja vietai, tās ir SPI2 un SPI3 vai sauktas par HSPI un VSPI. Abas SPI kopnes var darboties ne vairāk kā 80 MHz. Teorētiski tas var nospiest 320x240 16 bitu krāsu pikseļus uz SPI LCD ar ātrumu 60 kadri sekundē, bet vēl nav uzskaitījis laiku, kas vajadzīgs, lai nolasītu un atšifrētu video datus.
- 1 bitu / 4 bitu SD kopne var savienot SD karti vietējā protokolā
- I2S iekšējā DAC audio izeja
- video un audio buferim ir pieejama vairāk nekā 100 KB RAM
- Pietiekama apstrādes jauda, lai atšifrētu JPEG (atskaņot Motion JPEG) un LZW datu saspiešanu (atskaņot animētu GIF)
- Divkodolu versija var sadalīt lasāmos datus no SD kartes, atšifrēt un nospiest uz SPI LCD paralēlos daudzuzdevumos un uzlabot atskaņošanas veiktspēju
Ierobežojumi
- nav pietiekami daudz iekšējās RAM, lai būtu divkārša kadra buferis 320x240 formātā 16 bitu krāsās, tas ierobežoja daudzuzdevumu dizainu. To var nedaudz pārvarēt ar ārējo PSRAM, lai gan tas ir lēnāks nekā iekšējā RAM
- Nepietiek apstrādes jaudas, lai atšifrētu mp4 video
- ne visām ESP32 versijām ir 2 kodoli, vairāku uzdevumu paraugs gūst labumu tikai no divkodolu versijas
Atsauce:
2. darbība: video formāts
RGB565
Vai arī sauc par 16 bitu krāsu ir neapstrādātu datu formāts, ko parasti izmanto saziņai starp MCU un krāsu displeju. Katru krāsu pikseļu attēlo 16 bitu vērtība, pirmie 5 biti ir sarkanā vērtība, pēc 6 bitu ir zaļā vērtība un pēc tam 5 bitu zilā vērtība. 16 bitu vērtība var radīt 65536 krāsu variācijas, tāpēc to sauc arī par 64K krāsām. Tātad 1 minūte 320x240@30 kadri / s video tiks izmērīts: 16 * 320 * 240 * 30 * 60 = 2211840000 biti = 276480000 baiti vai vairāk nekā 260 MB
Animēts GIF
Šis ir izplatīts failu formāts tīmeklī kopš deviņdesmitajiem gadiem. Tas ierobežo katra ekrāna krāsu variācijas līdz 256 krāsām un neatkārto to, ka pikseļi tiek saglabāti tādā pašā krāsā kā iepriekšējais kadrs. Tātad tas var ievērojami samazināt faila lielumu, it īpaši, ja katrs animācijas rāmis nemaina pārāk daudz detaļu. LZW kompresija ir izstrādāta, lai to varētu atšifrēt 1990. gadu dators, tāpēc ESP32 ir arī pietiekami liela apstrādes jauda, lai to atšifrētu reālā laikā.
Kustības JPEG
Vai arī sauc par M-JPEG / MJPEG ir parasts video saspiešanas formāts video uztveršanas aparatūrai ar ierobežotu apstrādes jaudu. Patiesībā tas ir vienkārši nekustīgu JPEG kadru savienojums. Salīdzinot ar MPEG vai MP4, Motion JPEG nav nepieciešama skaitļošanas ziņā intensīva starp kadru paredzēšanas tehnika, katrs kadrs ir neatkarīgs. Tātad kodēšanai un atšifrēšanai ir nepieciešami mazāk resursu.
Atsauce:
en.wikipedia.org/wiki/List_of_monochrome_a…
en.wikipedia.org/wiki/GIF
en.wikipedia.org/wiki/Motion_JPEG
3. darbība: audio formāts
PCM
Neapstrādātu datu formāts digitālajam audio. ESP32 DAC izmanto 16 bitu dziļumu, kas nozīmē, ka katrs 16 bitu dati attēlo ciparu paraugu analogo signālu. Lielākajā daļā video un dziesmu audio parasti tiek izmantots izlases ātrums 44100 MHz, tas nozīmē 44100 parauga analogo signālu katrā sekundē. Tātad 1 minūtes mono audio PCM izejas dati tiks izmērīti: 16 * 44100 * 60 = 42336000 biti = 5292000 baiti vai vairāk nekā 5 MB. Stereo audio izmērs būs dubultā, t.i., vairāk nekā 10 MB
MP3
MPEG Layer 3 ir saspiests audio formāts, ko plaši izmanto dziesmu saspiešanai kopš 1990. gadiem. Tas var ievērojami samazināt faila lielumu līdz vienai desmitdaļai neapstrādāta PCM formāta
Atsauce:
en.wikipedia.org/wiki/Pulse-code_modulatio…
en.wikipedia.org/wiki/MP3
4. darbība: konvertēšanas formāts
Šis projekts izmanto FFmpeg, lai pārvērstu video ESP32 lasāmā formātā.
Lūdzu, lejupielādējiet un instalējiet FFmpeg savā oficiālajā vietnē, ja vēl neesat:
Konvertēt uz PCM audio
ffmpeg -i input.mp4 -f u16be -acodec pcm_u16le -ar 44100 -ac 1 44100_u16le.pcm
Konvertēt uz MP3 audio
ffmpeg -i input.mp4 -ar 44100 -ac 1 -q: a 9 44100.mp3
Pārvērst par 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
Konvertēt uz animētu GIF
ffmpeg -i input.mp4 -vf "fps = 15, skala = -1: 176: karodziņi = lanczos, crop = 220: in_h: (in_w -220)/2: 0, split [s0] [s1]; [s0] paletegen [p]; [s1] [p] paletteuse "-loop -1 220_15fps.gif
Pārvērst par Motion JPEG
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
Piezīme:
FFmpeg konvertētu animētu-g.webp" />
5. solis: aparatūras sagatavošana
ESP32 izstrādātāju padome
Jebkurai divkodolu ESP32 dev plāksnei vajadzētu būt kārtībā, šoreiz es izmantoju TTGO ESP32-Micro.
Krāsu displejs
Jebkuram krāsu displejam, kuru Arduino_GFX atbalsta, vajadzētu būt kārtībā, šoreiz es izmantoju ILI9225 sadalīšanas paneli ar SD kartes slotu.
Arduino_GFX atbalstīto krāsu displeju sarakstu varat atrast vietnē Github:
github.com/moononournation/Arduino_GFX
SD karte
Jebkurai SD kartei vajadzētu būt kārtībā, šoreiz es izmantoju SanDisk "normālā ātruma" 8 GB micro SD ar SD adapteri.
Audio
Ja vēlaties izmantot tikai austiņas, vienkārši pievienojiet austiņu tapas 26. tapai, un GND var klausīties audio. Vai arī varat izmantot nelielu pastiprinātāju, lai atskaņotu audio ar skaļruni.
Citi
Daži maizes dēļi un maizes dēļu vadi
6. darbība: SD saskarne
ILI9225 LCD sadalīšanas panelī bija arī SD crd slota sadalīšanas tapas. To var izmantot kā SPI kopni vai 1 bitu SD kopni. Kā minēts iepriekšējos norādījumos, es labprātāk izmantoju 1 bitu SD kopni, tāpēc šis projekts balstīsies uz 1 bitu SD kopni.
7. solis: salieciet to kopā
Iepriekš redzamajos attēlos ir redzama testēšanas platforma, kuru izmantoju šajā projektā. Baltā maize ir iespiesta 3D formātā, to varat lejupielādēt un izdrukāt vietnē thingiverse:
Faktiskais savienojums ir atkarīgs no tā, kāda aparatūra jums ir rokās.
Šeit ir savienojuma kopsavilkums:
ESP32
Vcc -> LCD Vcc GND -> LCD GND GPIO 2 -> SD D0/MISO -> 1k rezistors -> 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
Atsauce:
8. solis: programma
Arduino IDE
Lejupielādējiet un instalējiet Arduino IDE, ja vēl neesat to izdarījis:
www.arduino.cc/en/main/software
ESP32 atbalsts
Izpildiet instalēšanas instrukcijas, lai pievienotu ESP32 atbalstu, ja vēl neesat to izdarījis:
github.com/espressif/arduino-esp32
Arduino_GFX bibliotēka
Lejupielādējiet jaunākās Arduino_GFX bibliotēkas: (nospiediet "Klonēt vai lejupielādēt" -> "Lejupielādēt ZIP")
github.com/moononournation/Arduino_GFX
Importējiet bibliotēkas Arduino IDE. (Izvēlne Arduino IDE "Skice" -> "Iekļaut bibliotēku" -> "Pievienot. ZIP bibliotēku" -> atlasiet lejupielādēto ZIP failu)
ESP8266Audio
Lejupielādēt jaunākās ESP8266Audio bibliotēkas: (nospiediet "Klonēt vai lejupielādēt" -> "Lejupielādēt ZIP")
github.com/earlephilhower/ESP8266Audio
Importējiet bibliotēkas Arduino IDE. (Izvēlne Arduino IDE "Skice" -> "Iekļaut bibliotēku" -> "Pievienot. ZIP bibliotēku" -> atlasiet lejupielādēto ZIP failu)
RGB565_video koda paraugs
Lejupielādējiet jaunāko RGB565_video parauga kodu: (nospiediet "Klonēt vai lejupielādēt" -> "Lejupielādēt ZIP")
github.com/moononournation/RGB565_video
SD kartes dati
Kopējiet konvertētos failus uz SD karti un ievietojiet LCD kartes slotā
Apkopot un augšupielādēt
- Atveriet SDMMC_MJPEG_video_PCM_audio_dualSPI_multitask.ino Arduino IDE
- Ja neizmantojat ILI9225, nomainiet jauno klases kodu (ap 35. rindu), lai tas būtu pareizs
- Nospiediet pogu Arduino IDE "Augšupielādēt"
- Ja jums neizdevās augšupielādēt programmu, mēģiniet atvienot savienojumu starp ESP32 GPIO 2 un SD D0/MISO
- Ja jums šķiet, ka orientācija nav pareiza, nomainiet "rotācijas" vērtību (0-3) jaunā klases kodā
- Ja programma darbojas labi, varat izmēģināt citu paraugu, sākot ar SDMMC_*
- Ja jums nav SD kartes slota vai neesat instalējis FFmpeg, joprojām varat izmēģināt SPIFFS_* piemēru
9. solis: etalons
Šeit ir veiktspējas kopsavilkums dažādiem video (220x176) un audio (44100 MHz) formātiem:
Formāts | Kadrs sekundē (kadri sekundē) |
MJPEG + PCM | 30 |
15 | |
RGB565 + PCM | 9 |
MJPEG + MP3 | 24 |
Piezīme:
- MJPEG + PCM var sasniegt augstāku kadru nomaiņas ātrumu sekundē, taču nav nepieciešama atskaņošana nelielā ekrānā, kas ir lielāks par 30 kadriem sekundē
- RGB565 nav nepieciešams atšifrēšanas process, taču datu apjoms ir pārāk liels, un datu ielādēšanai no SD, 4 bitu SD kopnes un ātrākas SD kartes tiek patērēts daudz laika (to var nedaudz uzlabot (savvaļas minējums var sasniegt aptuveni 12 kadrus sekundē))
- MP3 atšifrēšanas process vēl nav optimizēts, tagad tas atvēl kodolu 0 MP3 dekodēšanai un kodolu 1 video atskaņošanai
10. solis: laimīgu spēli
Tagad jūs varat atskaņot video un audio ar savu ESP32, tas pavēra daudzas iespējas!
Es domāju, ka vēlāk es uztaisīšu nelielu vintage televizoru …
Ieteicams:
TextPlayBulb: REST iespējota atskaņošana Bulb, izmantojot Raspberry Pi 3, BLE un telegrammu: 3 soļi
TextPlayBulb: REST iespējots PlayBulb, izmantojot Raspberry Pi 3, BLE un telegrammu: šī pamācība parāda, kā izveidot savienojumu ar PlayBulb krāsu Bluetooth LED lampu, izmantojot Python, Raspberry Pi 3 un Bluetooth bibliotēku, un paplašināt vadīklas, izmantojot REST API IoT scenārijam , un, kā pierādījums, projekts arī parāda, kā paplašināt šo
Runājošais Arduino - MP3 atskaņošana ar Arduino bez moduļa - Mp3 faila atskaņošana no Arduino, izmantojot PCM: 6 soļi
Runājošais Arduino | MP3 atskaņošana ar Arduino bez moduļa | Mp3 faila atskaņošana no Arduino, izmantojot PCM: Šajā pamācībā mēs iemācīsimies atskaņot mp3 failu ar arduino, neizmantojot nevienu audio moduli, šeit mēs izmantosim PCM bibliotēku Arduino, kas atskaņo 16 bitu PCM ar 8 kHz frekvenci, tāpēc ļauj to izdarīt
Midi ieraksts/atskaņošana/pārsniegšana ar 5 kontaktu savienojumiem: 3 soļi
Midi ieraksts/atskaņošana/pārsniegšana ar 5 kontaktu savienojumiem: * izmanto ATMega-1284 mikroshēmu, kas darbojas 8 MHz frekvencē, ar 4 k baitu RAM un 4 kB eeprom * izmanto vecos DIN 5 kontaktu savienotājus * ļauj ierakstīt un atskaņot, kā arī overdub: ierakstīšana kopā ar kaut ko iepriekš ierakstītu. * Pilna ēdienkarte * Capab
Audio skaņas failu atskaņošana (Wav) ar Arduino un DAC: 9 soļi
Audio skaņas failu atskaņošana (Wav) ar Arduino un DAC: atskaņojiet wav failu audio no savas Audino SD kartes. Šī pamācība parādīs, kā jūsu SdCard wav failu var atskaņot, izmantojot vienkāršu ķēdi skaļrunim. Wav failam jābūt 8 bitu mono. Man nav bijis problēmu atskaņot 44 KHz failus. Lai gan nē
Arduino Bascis - Skaņu un toņu atskaņošana: 5 soļi
Arduino Bascis - Skaņu un toņu atskaņošana: Es gribēju atskaņot dažus skaņas efektus un sapratu, ka šī ir viena no novārtā atstātajām jomām, kad runa ir par apmācībām. Pat vietnē Youtube trūkst labu pamācību par Arduinos un skaņām, tāpēc, būdams jauks puisis, nolēmu dalīties savās zināšanās