Mundarija:
- 1 -qadam: ESP32 xususiyatlari va cheklovlari
- 2 -qadam: Video formati
- 3 -qadam: Ovoz formati
- 4 -qadam: konvertatsiyani formatlash
- 5 -qadam: Uskuna tayyorlash
- 6 -qadam: SD interfeysi
- 7 -qadam: Birgalikda joylashtiring
- 8 -qadam: Dastur
- 9 -qadam: Benchmark
- 10 -qadam: Baxtli o'yin
Video: Videoni ESP32 bilan ijro etish: 10 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-31 10:26
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
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
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
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
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
- SDMMC_MJPEG_video_PCM_audio_dualSPI_multitask.ino -ni Arduino IDE -da oching
- Agar siz ILI9225 dan foydalanmasangiz, sinf nomini to'g'rilash uchun yangi sinf kodini o'zgartiring (35 -qator atrofida)
- Arduino IDE "Yuklab olish" tugmachasini bosing
- Agar siz dasturni yuklay olmasangiz, ESP32 GPIO 2 va SD D0/MISO o'rtasidagi aloqani uzib ko'ring.
- Agar siz yo'nalishni noto'g'ri deb topsangiz, yangi sinf kodidagi "aylanish" qiymatini (0-3) o'zgartiring
- Agar dastur yaxshi ishlayotgan bo'lsa, siz SDMMC_* bilan boshqa namuna boshlashni sinab ko'rishingiz mumkin.
- 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
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
Endi siz ESP32 bilan video va audio ijro etishingiz mumkin, bu ko'plab imkoniyatlarni ochib berdi!
O'ylaymanki, keyinroq kichkina vintage televizor qilaman …
Tavsiya:
Gapirish Arduino - Hech qanday modulsiz Arduino bilan MP3 ijro etish - PC fayllari yordamida Arduino -dan Mp3 faylini ijro etish: 6 qadam
Gapirish Arduino | Hech qanday modulsiz Arduino bilan MP3 ijro etish | PC faylini ishlatib, Arduino -dan Mp3 faylini ijro etish: Bu erda biz audio faylni ishlatmasdan mp3 faylini arduino -da qanday ijro etishni bilib olamiz, bu erda biz Arduino uchun 8 -gigagertsli chastotali 16 -bitli PCM -ni o'ynaydigan PCM kutubxonasidan foydalanamiz
Karnay yoki Flyback transformatorida PWM yordamida Arduino yordamida qo'shiqlarni (MP3) ijro etish: 6 qadam (rasmlar bilan)
Qo'shiqlarni (MP3) Arduino bilan PWM yordamida karnay yoki Flyback transformatorida ijro eting: Salom bolalar, bu mening birinchi ko'rsatmam, sizga yoqadi degan umiddaman !! Asosan, men ushbu loyihada Arduino va noutbuk o'rtasidagi ketma -ket aloqani qo'lladim. musiqa ma'lumotlarini noutbukdan Arduino -ga uzatish. Va Arduino TIMERS -dan foydalanish
Eng zo'r xoldinglar: Men eng zo'r musiqani ijro etish uchun eski telefonni buzdim: 13 qadam (rasmlar bilan)
Eng zo'r xoldinglar: Men eng zo'r musiqani ijro etish uchun eski telefonni buzdim: https: //youtu.be/Ma4QnfQ7DxoWell … Ishonchim komilki, siz shunchaki musiqani ushlab turadigan telefonni xohlamaysiz … Lekin "Ish stoli" ning eng oddiy hacki bilan boshqa ko'plab qiziqarli loyihalarni amalga oshirish mumkin. telefonlar.
AI va YouTube -dan foydalanib, CD -pleersiz kompakt -disklarni ijro etish: 10 qadam (rasmlar bilan)
CD -pleersiz, AI va YouTube -dan foydalanib, CD -larni ijro eting: CD -laringizni ijro qilmoqchimisiz, lekin boshqa CD -pleeringiz yo'qmi? Disklaringizni yirtishga vaqtingiz bo'lmadimi? Yo'q qilingan, lekin kerak bo'lganda fayllar ishlamayapti? Muammo yo'q. AI (sun'iy intellekt) sizning kompakt -diskingizni aniqlasin va YouTube uni ijro etsin! Men Android ilovasini yozdim
Raspberry Pi bilan ijro etish yozuvchisi: 7 qadam (rasmlar bilan)
Raspberry Pi bilan ijro etish yozuvchisi: Hammaga salom, men bu ko'rsatmada Raspberry Pi yordamida qanday yozish yozuvchisi qilganimni tushuntiraman. Qurilma Raspberry Pi modeli B+bo'lib, uning tepasida 7 ta tugma, Pi -ning usb portlaridan biriga ulangan karnay va boshqasiga ulangan mikrofon bor