Orodha ya maudhui:

Cheza Video Na ESP32: Hatua 10 (na Picha)
Cheza Video Na ESP32: Hatua 10 (na Picha)

Video: Cheza Video Na ESP32: Hatua 10 (na Picha)

Video: Cheza Video Na ESP32: Hatua 10 (na Picha)
Video: ESP32 Tutorial 5 - LED Fade, control brightness of an LED -ESP32 IoT Learnig kit 2024, Novemba
Anonim
Cheza Video Na ESP32
Cheza Video Na ESP32

Maagizo haya yanaonyesha kitu juu ya kucheza video na sauti na ESP32.

Hatua ya 1: Vipengele vya ESP32 na Upungufu

Vipengele

  • Basi ya SPI 4, basi 2 ya SPI inapatikana kwa nafasi ya mtumiaji, ni SPI2 na SPI3 au inaitwa HSPI na VSPI. Basi zote za SPI zinaweza kukimbia zaidi ya 80 MHz. Kinadharia inaweza kushinikiza saizi za rangi 320x240 16-bit kwa SPI LCD kwa fps 60, lakini bado haijahesabu saa inayotakiwa kwa kusoma na kuamua data ya video.
  • Basi ya SD ya 1-bit / 4-bit inaweza kuunganisha kadi ya SD katika itifaki ya asili
  • Pato la sauti la ndani la I2S
  • zaidi ya 100 KB ya RAM inapatikana kwa bafa ya video na sauti
  • Nguvu ya kutosha ya usindikaji kuamua JPEG (cheza Motion JPEG) na ukandamizaji wa data ya LZW (cheza Animated GIF)
  • Toleo la msingi-mbili linaweza kugawanya data iliyosomwa kutoka kwa kadi ya SD, kusimbua na kushinikiza kwa SPI LCD katika kazi nyingi zinazofanana na kuongeza utendaji wa kucheza

Upungufu

  • haitoshi RAM ya ndani kuwa na bafa ya fremu mbili kwa 320x240 katika rangi 16-bit, ilizuia muundo wa kazi nyingi. Inaweza kushinda kidogo na PSRAM ya nje ingawa ni polepole kuliko RAM ya ndani
  • haitoshi nguvu ya usindikaji kuamua video ya mp4
  • sio toleo lote la ESP32 lenye msingi 2, sampuli ya kazi nyingi hufaidika tu kwenye toleo la msingi-mbili

Ref.:

Hatua ya 2: Umbizo la Video

RGB565

Au inayoitwa rangi ya 16-bit ni fomati ya data ghafi inayotumiwa sana kwenye mawasiliano kati ya MCU na onyesho la rangi. Kila pikseli ya rangi inawakilishwa na thamani ya 16-bit, 5-bit ya kwanza ni nyekundu, ikifuata 6-bit ni thamani ya kijani na kisha 5-bit thamani ya bluu. Thamani ya 16-bit inaweza kufanya tofauti ya rangi 65536 kwa hivyo inaitwa pia rangi 64K. Kwa hivyo video 1 dakika 320x240 @ 30 fps itakuwa saizi: 16 * 320 * 240 * 30 * 60 = 2211840000 bits = 276480000 byte au zaidi ya 260 MB

Hii ni fomati ya faili ya kawaida kwenye wavuti tangu miaka ya 1990. Inapunguza utofauti wa rangi kwa kila skrini hadi rangi 256 na usirudie kuhifadhi pikseli hiyo kama rangi sawa na fremu iliyopita. Kwa hivyo inaweza kupunguza saizi ya faili, haswa wakati kila fremu ya uhuishaji haibadiliki maelezo mengi. Ukandamizaji wa LZW umeundwa na uwezo wa kukataliwa na kompyuta ya miaka ya 1990, kwa hivyo ESP32 pia ina nguvu ya kutosha ya usindikaji kuisuluhisha kwa wakati halisi.

Mwendo JPEG

Au inayoitwa M-JPEG / MJPEG ni muundo wa kawaida wa kukandamiza video kwa vifaa vya kukamata video na nguvu ndogo ya usindikaji. Kwa kweli ni mkusanyiko wa muafaka bado wa JPEG. Linganisha na MPEG au MP4, Motion JPEG hakuna hitaji la mbinu kubwa ya hesabu ya utabiri wa kuingiliana, kila fremu inajitegemea. Kwa hivyo inahitaji rasilimali kidogo kusimba na kusimbua.

Ref.

en.wikipedia.org/wiki/List_of_monochrome_a…

en.wikipedia.org/wiki/GIF

en.wikipedia.org/wiki/Motion_JPEG

Hatua ya 3: Umbizo la Sauti

PCM

Muundo wa data mbichi ya sauti ya dijiti. ESP32 DAC hutumia kina kidogo cha 16-bit, hiyo inamaanisha kila data ya 16-bit inawakilisha ishara ya analog ya sampuli ya dijiti. Sauti nyingi za video na wimbo kawaida hutumia kiwango cha sampuli kwa 44100 MHz, hiyo inamaanisha ishara ya analog ya sampuli 44100 kwa kila sekunde. Kwa hivyo, data mbichi ya dakika 1 ya sauti ya PCM itakuwa saizi: 16 * 44100 * 60 = 42336000 bits = ka 5292000 au zaidi ya 5 MB. Saizi ya sauti ya stereo itakuwa mara mbili, i.e.zidi 10 MB

MP3

Tabaka la 3 la MPEG ni umbizo la sauti lililobanwa kutumika sana kwa kukandamiza wimbo tangu miaka ya 1990. Inaweza kupunguza kwa kiasi kikubwa saizi ya faili hadi chini ya moja ya kumi ya fomati ghafi ya PCM

Ref.

en.wikipedia.org/wiki/Pulse-code_modulatio …….

en.wikipedia.org/wiki/MP3

Hatua ya 4: Umbiza Ubadilishaji

Mradi huu unatumia FFmpeg kubadilisha video kuwa fomati inayosomeka ya ESP32.

Tafadhali pakua na usakinishe FFmpeg kwenye tovuti yao rasmi ikiwa bado:

Badilisha kwa sauti ya PCM

ffmpeg -i pembejeo.mp4 -f u16be -acodec pcm_u16le -ar 44100 -ac 1 44100_u16le.pcm

Badilisha kwa sauti ya MP3

ffmpeg -i pembejeo.mp4 -ar 44100 -ac 1 -q: a 9 44100.mp3

Badilisha kuwa RGB565

ffmpeg -i pembejeo.mp4 -vf "fps = 9, scale = -1: 176: bendera = lanczos, mazao = 220: in_h: (in_w-220) / 2: 0" -c: v rawvideo -pix_fmt rgb565be 220_9fps. rgb

Badilisha kuwa-g.webp

ffmpeg -i pembejeo.mp4 -vf "fps = 15, scale = -1: 176: bendera = lanczos, mazao = 220: in_h: (in_w-220) / 2: 0, split [s0] [s1]; [s0 palettegen [p]; [s1] [p] paletteuse "-loop -1 220_15fps.gif

Badilisha kwa Mwendo JPEG

ffmpeg -i pembejeo.mp4 -vf "fps = 30, wadogo = -1: 176: bendera = lanczos, mazao = 220: in_h: (in_w-220) / 2: 0" -q: v 9 220_30fps.mjpeg

Kumbuka:

GF ya Uhuishaji iliyobadilishwa FFmpeg inaweza kuboreshwa zaidi na zana zingine za wavuti, unaweza kutafuta optimizer ya-g.webp" />

Hatua ya 5: Maandalizi ya vifaa

Maandalizi ya vifaa
Maandalizi ya vifaa

Bodi ya ESP32 Dev

Bodi yoyote ya msingi ya ESP32 inapaswa kuwa sawa, wakati huu ninatumia TTGO ESP32-Micro.

Kuonyesha Rangi

Onyesho lolote la rangi ambalo msaada wa Arduino_GFX unapaswa kuwa sawa, wakati huu ninatumia bodi ya kuzuka ya ILI9225 iliyo na kadi ya SD.

Unaweza kupata orodha ya kuonyesha rangi ya Arduino_GFX huko Github:

github.com/moononournation/Arduino_GFX

Kadi ya SD

Kadi yoyote ya SD inapaswa kuwa sawa, wakati huu ninatumia SanDisk "kasi ya kawaida" 8 GB ndogo ya SD na adapta ya SD.

Sauti

Ikiwa unataka kutumia kipaza sauti tu, unganisha tu pini za kichwa ili kubandika 26 na GND inaweza kusikiliza sauti. Au unaweza kutumia kipaza sauti kidogo kucheza sauti na spika.

Wengine

Baadhi ya ubao wa mkate na waya za mkate

Hatua ya 6: Kiolesura cha SD

Kiungo cha SD
Kiungo cha SD
Kiungo cha SD
Kiungo cha SD

Bodi ya kuzuka ya ILI9225 LCD pia ilijumuisha pini za kuzima za SD crd. Inaweza kutumika kama basi ya SPI au basi ya 1-bit SD. Kama nilivyosema katika mafundisho yangu ya hapo awali, napendelea kutumia basi ya 1-bit SD, kwa hivyo mradi huu utategemea basi ya 1-bit SD.

Hatua ya 7: Kuiweka Pamoja

Kuiweka Pamoja
Kuiweka Pamoja
Kuiweka Pamoja
Kuiweka Pamoja
Kuiweka Pamoja
Kuiweka Pamoja

Picha hapo juu zinaonyesha jukwaa la upimaji ninalo tumia katika mradi huu. Bodi nyeupe ya mkate imechapishwa na 3D, unaweza kuipakua na kuichapisha kwenye eneo la habari:

Uunganisho halisi unategemea vifaa gani unavyo mkononi.

Hapa kuna muhtasari wa unganisho:

E3232

Vcc -> LCD Vcc GND -> LCD GND GPIO 2 -> SD D0 / MISO -> 1k kipinga -> 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.:

Hatua ya 8: Programu

Programu
Programu

Arduino IDE

Pakua na usakinishe Arduino IDE ikiwa bado haujafanya:

www.arduino.cc/en/main/software

Msaada wa ESP32

Fuata Maagizo ya Usanikishaji ili kuongeza msaada wa ESP32 ikiwa bado haujaifanya:

github.com/espressif/arduino-esp32

Maktaba ya Arduino_GFX

Pakua maktaba za hivi karibuni za Arduino_GFX: (bonyeza "Clone au Pakua" -> "Pakua ZIP")

github.com/moononournation/Arduino_GFX

Ingiza maktaba katika Arduino IDE. (Arduino IDE "Mchoro" Menyu -> "Jumuisha Maktaba" -> "Ongeza Maktaba ya ZIP" -> chagua faili ya ZIP iliyopakuliwa)

ESP8266 Sauti

Pakua hivi karibuni maktaba za ESP8266Audio: (bonyeza "Clone au Pakua" -> "Pakua ZIP")

github.com/earlephilhower/ESP8266Audio

Ingiza maktaba katika Arduino IDE. (Arduino IDE "Mchoro" Menyu -> "Jumuisha Maktaba" -> "Ongeza Maktaba ya ZIP" -> chagua faili ya ZIP iliyopakuliwa)

Msimbo wa Mfano wa RGB565_video

Pakua nambari mpya ya sampuli ya RGB565_video: (bonyeza "Clone au Pakua" -> "Pakua ZIP")

github.com/moononournation/RGB565_video

Takwimu za Kadi ya SD

Nakili faili zilizobadilishwa kwenye kadi ya SD na ingiza kwenye slot ya kadi ya LCD

Jumuisha na Upakie

  1. Fungua SDMMC_MJPEG_video_PCM_audio_dualSPI_multitask.ino katika Arduino IDE
  2. Ikiwa hutumii ILI9225, badilisha nambari mpya ya darasa (karibu na mstari wa 35) kusahihisha jina la darasa
  3. Bonyeza kitufe cha "Pakia" cha Arduino IDE
  4. Ikiwa umeshindwa kupakia programu hiyo, jaribu kuondoa unganisho kati ya ESP32 GPIO 2 na SD D0 / MISO
  5. Ukiona mwelekeo sio sahihi, badilisha thamani ya "mzunguko" (0-3) katika nambari mpya ya darasa
  6. Ikiwa programu inaendeshwa vizuri unaweza kujaribu sampuli nyingine kuanza na SDMMC_ *
  7. Ikiwa hauna kadi ya SD au huna FFmpeg iliyosanikishwa, bado unaweza kujaribu mfano wa SPIFFS_ *

Hatua ya 9: Benchi

Kiashiria
Kiashiria

Hapa kuna muhtasari wa utendaji wa video tofauti (220x176) na fomati ya sauti (44100 MHz):

Umbizo Sura kwa sekunde (ramprogrammen)
MJPEG + PCM 30
15
RGB565 + PCM 9
MJPEG + MP3 24

Kumbuka:

  • MJPEG + PCM inaweza kufikia ramprogrammen ya juu lakini sio kucheza kwa lazima kwenye skrini ndogo zaidi ya 30 fps
  • RGB565 haihitaji mchakato wa kusimbua lakini saizi ya data ni kubwa sana na inatumiwa wakati mwingi kupakia data kutoka kwa SD, basi ya 4-bit SD na kadi ya SD haraka inaweza kuiboresha kidogo (nadhani ya mwitu inaweza kufikia karibu ramprogrammen 12)
  • Mchakato wa kusimbua MP3 bado haujaboreshwa, sasa ni kujitolea kwa msingi wa 0 kwa uamuzi wa MP3 na msingi 1 wa kucheza video

Hatua ya 10: Kucheza kwa Furaha

Kucheza kwa Furaha!
Kucheza kwa Furaha!

Sasa unaweza kucheza video na sauti na ESP32 yako, ilifungua uwezekano mwingi!

Nadhani nitaunda TV ndogo ya zabibu baadaye …

Ilipendekeza: