Mundarija:

Videoni ESP32 bilan ijro etish: 10 qadam (rasmlar bilan)
Videoni ESP32 bilan ijro etish: 10 qadam (rasmlar bilan)

Video: Videoni ESP32 bilan ijro etish: 10 qadam (rasmlar bilan)

Video: Videoni ESP32 bilan ijro etish: 10 qadam (rasmlar bilan)
Video: Распознавание номеров авто с YOLOv7 + OCR на Google Colab | Учебник ANPR/ALPR 2023 2024, Noyabr
Anonim
ESP32 bilan video ijro etish
ESP32 bilan video ijro etish

Bu ko'rsatma ESP32 yordamida video va audio ijro etish haqida nimadir ko'rsatadi.

1 -qadam: ESP32 xususiyatlari va cheklovlari

Xususiyatlari

  • 4 ta SPI avtobusi, 2 ta SPI avtobusi, ular SPI2 va SPI3 yoki HSPI va VSPI deb ataladi. Ikkala SPI avtobuslari 80 MGts tezlikda ishlashi mumkin. Nazariy nuqtai nazardan, u 320x240 16-bitli rangli pikselni SPI LCD-ga 60 kadr tezlikda surishi mumkin, lekin u hali video ma'lumotlarini o'qish va dekodlash uchun zarur bo'lgan vaqtni hisoblamagan.
  • 1-bitli / 4-bitli SD-avtobus SD-kartani mahalliy protokolda ulashi mumkin
  • I2S ichki DAC audio chiqishi
  • video va audio bufer uchun 100 KB dan ortiq RAM mavjud
  • JPEG (Play Motion JPEG) va LZW ma'lumotlarini siqishni (Animatsion-g.webp" />
  • Ikki yadroli versiya o'qilgan ma'lumotlarni SD-kartadan ajratishi, dekodlanishi va SPI LCD-ni parallel ko'p vazifalarga o'tkazishi va ijro etish qobiliyatini oshirishi mumkin.

Cheklovlar

  • 16-bitli 320x240 o'lchamdagi ikki qavatli buferga ega bo'lish uchun ichki RAM etarli emas, bu ko'p vazifali dizaynni cheklab qo'ydi. U tashqi PSRAM bilan biroz yengib o'tishi mumkin, lekin u ichki RAMga qaraganda sekinroq
  • mp4 videoni dekodlash uchun ishlov berish kuchi etarli emas
  • ESP32 versiyasining hammasi ham 2 yadroli emas, ko'p vazifali namuna faqat ikki yadroli versiyada foyda keltiradi

Manba:

2 -qadam: Video formati

RGB565

Yoki 16-bitli rang-bu MCU va rangli displey o'rtasidagi aloqada keng qo'llaniladigan ma'lumotlar formati. Har bir rangli piksel 16-bitli qiymat bilan ifodalanadi, birinchi 5-bit qizil, 6-bitdan keyin yashil, keyin 5-bitli ko'k. 16-bitli qiymat 65536 rang o'zgarishi mumkin, shuning uchun uni 64K rang deb ham atash mumkin. Shunday qilib, 320x240 soniyada 30 soniyali video o'lchamlari: 16 * 320 * 240 * 30 * 60 = 2211840000 bit = 276480000 bayt yoki 260 MB dan oshadi.

Animatsion GIF

Bu 1990 -yillardan beri Internetda keng tarqalgan fayl formati. Har bir ekranning rang o'zgarishini 256 ta ranggacha cheklaydi va pikselni avvalgi kadr bilan bir xil rangda saqlamaydi. Shunday qilib, bu fayl hajmini sezilarli darajada kamaytirishi mumkin, ayniqsa har bir animatsiya ramkasi juda ko'p tafsilotlarni o'zgartirmasa. LZW siqish 1990 -yillardagi kompyuterlar tomonidan dekodlanishi mumkin bo'lgan tarzda ishlab chiqilgan, shuning uchun ESP32 uni real vaqtda dekodlash uchun etarli darajada ishlov berish quvvatiga ega.

Harakat JPEG

Yoki M-JPEG / MJPEG deb nomlangan-bu ishlov berish quvvati cheklangan, video yozish uskunalari uchun keng tarqalgan video siqish formati. Bu aslida hali ham JPEG freymlarining birlashishi. MPEG yoki MP4, Motion JPEG bilan solishtiring, kadrlararo bashorat qilishning intensiv hisoblash texnikasi kerak emas, har bir kadr mustaqil. Shunday qilib, kodlash va dekodlash uchun kamroq resurs talab qilinadi.

Refer.:

uz.wikipedia.org/wiki/List_of_monochrome_a…

en.wikipedia.org/wiki/GIF

en.wikipedia.org/wiki/Motion_JPEG

3 -qadam: Ovoz formati

PCM

Raqamli audio uchun xom ma'lumotlar formati. ESP32 DAC 16 bitli chuqurlikdan foydalanadi, ya'ni har bir 16 bitli ma'lumotlar raqamli namunali analog signalni bildiradi. Ko'pgina video va qo'shiq tovushlari odatda 44100 MGts chastotada namuna olish tezligidan foydalanadi, ya'ni har bir soniya uchun 44100 namunali analog signal. Shunday qilib, 1 daqiqali mono audio PCM xom ma'lumotlari o'lchamlari bo'ladi: 16 * 44100 * 60 = 42336000 bit = 5292000 bayt yoki 5 MB dan ortiq. Stereo audio hajmi ikki baravar, ya'ni 10 MB dan oshadi

MP3

MPEG Layer 3 - 1990 -yillardan boshlab qo'shiqlarni siqish uchun keng qo'llaniladigan siqilgan audio format. Bu fayl hajmini xom PCM formatining o'ndan bir qismigacha keskin kamaytirishi mumkin

Refer.:

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

uz.wikipedia.org/wiki/MP3

4 -qadam: konvertatsiyani formatlash

Ushbu loyiha FFmpeg yordamida videoni ESP32 o'qiladigan formatga o'tkazadi.

Iltimos, hali bo'lmasa, FFmpegni rasmiy saytiga yuklab oling va o'rnating:

PCM ovoziga aylantirish

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

MP3 audioga aylantirish

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

RGB565 ga o'zgartiring

ffmpeg -i input.mp4 -vf "fps = 9, o'lchov = -1: 176: bayroqlar = lanczos, kesish = 220: in_h: (in_w -220)/2: 0" -c: v rawvideo -pix_fmt rgb565be 220_9fps. rgb

Animatsion-g.webp

ffmpeg -i input.mp4 -vf "fps = 15, o'lchov = -1: 176: bayroqlar = lanczos, kesish = 220: in_h: (in_w -220)/2: 0, bo'linish [s0] [s1]; [s0] palettegen [p]; [s1] [p] palitrasi "-loop -1 220_15fps.gif

Motion JPEG formatiga aylantirish

ffmpeg -i input.mp4 -vf "fps = 30, o'lchov = -1: 176: bayroqlar = lanczos, kesish = 220: in_h: (in_w -220)/2: 0" -q: v 9 220_30fps.mjpeg

Eslatma:

FFmpeg -ga o'zgartirilgan animatsion-g.webp" />

5 -qadam: Uskuna tayyorlash

Uskunani tayyorlash
Uskunani tayyorlash

ESP32 ishlab chiqarish kartasi

Har qanday ikki yadroli ESP32 ishlab chiqarish kartasi yaxshi bo'lishi kerak, bu safar men TTGO ESP32-Micro-dan foydalanayapman.

Rangli displey

Arduino_GFX qo'llab -quvvatlaydigan har qanday rangli displey yaxshi bo'lishi kerak, bu safar men SD -karta uyasi bo'lgan ILI9225 panelini ishlataman.

Arduino_GFX tomonidan qo'llab -quvvatlanadigan rangli displeylar ro'yxatini Github -da topishingiz mumkin:

github.com/moononournation/Arduino_GFX

SD -karta

Har qanday SD -karta yaxshi bo'lishi kerak, bu safar men SD -adapterli SanDisk "normal tezligi" 8 Gb bo'lgan micro SD -dan foydalanayapman.

Audio

Agar siz faqat naushnikdan foydalanmoqchi bo'lsangiz, naushnik pinlarini 26 -pinga ulang va GND ovozni eshitishi mumkin. Yoki siz karnay bilan ovozni ijro etish uchun kichkina kuchaytirgichdan foydalanishingiz mumkin.

Boshqalar

Ba'zi taxtalar va taxtali simlari

6 -qadam: SD interfeysi

SD interfeysi
SD interfeysi
SD interfeysi
SD interfeysi

ILI9225 LCD displey taxtasida, shuningdek, SD -crd uyasi uchun ajratgichlar ham bor edi. U SPI yoki 1-bitli SD-avtobus sifatida ishlatilishi mumkin. Oldingi ko'rsatmalarimda aytib o'tilganidek, men 1-bitli SD-avtobusdan foydalanishni afzal ko'raman, shuning uchun bu loyiha 1-bitli SD-avtobusga asoslangan.

7 -qadam: Birgalikda joylashtiring

Birgalikda joylashtiring
Birgalikda joylashtiring
Birgalikda joylashtiring
Birgalikda joylashtiring
Birgalikda joylashtiring
Birgalikda joylashtiring

Yuqoridagi rasmlarda men ushbu loyihada foydalanayotgan test platformasi ko'rsatilgan. Oq taxta 3D bosma bo'lib, uni boshqa joydan yuklab olishingiz va chop etishingiz mumkin:

Haqiqiy aloqa sizning qo'lingizda qaysi uskunaga bog'liq.

Bu erda ulanishning qisqacha tavsifi:

ESP32

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

Manzil:

8 -qadam: Dastur

Dastur
Dastur

Arduino IDE

Agar siz hali buni qilmagan bo'lsangiz, Arduino IDE -ni yuklab oling va o'rnating:

www.arduino.cc/en/main/software

ESP32 qo'llab -quvvatlash

ESP32 qo'llab -quvvatlashini qo'shish uchun o'rnatish ko'rsatmalariga amal qiling, agar siz hali buni qilmasangiz:

github.com/espressif/arduino-esp32

Arduino_GFX kutubxonasi

Oxirgi Arduino_GFX kutubxonalarini yuklab oling: ("Klonlash yoki Yuklab olish" -> "Yuklab olish ZIP" ni bosing)

github.com/moononournation/Arduino_GFX

Arduino IDE kutubxonalarini import qilish. (Arduino IDE "Sketch" menyusi -> "Kutubxonani qo'shish" -> "ZIP kutubxonasini qo'shish" -> yuklangan ZIP faylini tanlang)

ESP8266 audio

Oxirgi ESP8266Audio kutubxonalarini yuklab oling: ("Klonlash yoki Yuklab olish" -> "ZIP yuklash" tugmasini bosing)

github.com/earlephilhower/ESP8266Audio

Arduino IDE kutubxonalarini import qilish. (Arduino IDE "Sketch" menyusi -> "Kutubxonani qo'shish" -> "ZIP kutubxonasini qo'shish" -> yuklangan ZIP faylini tanlang)

RGB565_video namuna kodi

Oxirgi RGB565_video namuna kodini yuklab oling: ("Klonlash yoki Yuklab olish" -> "Yuklab olish ZIP" ni bosing)

github.com/moononournation/RGB565_video

SD -karta ma'lumotlari

O'tkazilgan fayllarni SD -kartaga nusxalash va LCD -karta uyasiga joylashtiring

Kompilyatsiya qilish va yuklash

  1. SDMMC_MJPEG_video_PCM_audio_dualSPI_multitask.ino -ni Arduino IDE -da oching
  2. Agar siz ILI9225 dan foydalanmasangiz, sinf nomini to'g'rilash uchun yangi sinf kodini o'zgartiring (35 -qator atrofida)
  3. Arduino IDE "Yuklab olish" tugmachasini bosing
  4. Agar siz dasturni yuklay olmasangiz, ESP32 GPIO 2 va SD D0/MISO o'rtasidagi aloqani uzib ko'ring.
  5. Agar siz yo'nalishni noto'g'ri deb topsangiz, yangi sinf kodidagi "aylanish" qiymatini (0-3) o'zgartiring
  6. Agar dastur yaxshi ishlayotgan bo'lsa, siz SDMMC_* bilan boshqa namuna boshlashni sinab ko'rishingiz mumkin.
  7. Agar sizda SD karta uyasi bo'lmasa yoki sizda FFmpeg o'rnatilgan bo'lmasa, siz hali ham SPIFFS_* misolini sinab ko'rishingiz mumkin.

9 -qadam: Benchmark

Benchmark
Benchmark

Bu erda turli xil video (220x176) va audio (44100 MGts) formatidagi ishlashning qisqacha tavsifi:

Format Sekundiga kadr (soniya)
MJPEG + PCM 30
15
RGB565 + PCM 9
MJPEG + MP3 24

Eslatma:

  • MJPEG + PCM yuqori tezlikka erishishi mumkin, lekin 30 kadrdan oshiq kichik ekranda keraksiz ijro.
  • RGB565 dekodlash jarayonini talab qilmaydi, lekin ma'lumotlar hajmi juda katta va SD, 4-bitli SD-avtobus va tezroq SD-kartadan ma'lumotlarni yuklashda ko'p vaqt sarflanadi, uni biroz yaxshilashi mumkin (yovvoyi taxmin 12 fps atrofida bo'lishi mumkin).
  • MP3 -ni dekodlash jarayoni hali optimallashtirilmagan, endi u MP3 -ni ochish uchun yadro 0 va videoni ijro etish uchun yadro 1 -ni ajratadi

10 -qadam: Baxtli o'yin

Baxtli o'yin!
Baxtli o'yin!

Endi siz ESP32 bilan video va audio ijro etishingiz mumkin, bu ko'plab imkoniyatlarni ochib berdi!

O'ylaymanki, keyinroq kichkina vintage televizor qilaman …

Tavsiya: