Агуулгын хүснэгт:

ESP32 ашиглан видео тоглуулах: 10 алхам (зурагтай)
ESP32 ашиглан видео тоглуулах: 10 алхам (зурагтай)

Видео: ESP32 ашиглан видео тоглуулах: 10 алхам (зурагтай)

Видео: ESP32 ашиглан видео тоглуулах: 10 алхам (зурагтай)
Видео: Equipment Corner - Steppers 2024, Арваннэгдүгээр
Anonim
ESP32 ашиглан видео тоглуулах
ESP32 ашиглан видео тоглуулах

Энэхүү зааварчилгаа нь ESP32 ашиглан видео болон аудио тоглуулахтай холбоотой ямар нэг зүйлийг харуулдаг.

Алхам 1: ESP32 -ийн онцлог ба хязгаарлалт

Онцлог шинж чанарууд

  • 4 SPI автобус, 2 SPI автобусыг хэрэглэгчийн орон зайд ашиглах боломжтой бөгөөд эдгээр нь SPI2 ба SPI3 буюу HSPI ба VSPI гэж нэрлэгддэг. SPI автобус хоёулаа хамгийн ихдээ 80 МГц давтамжтай ажиллах боломжтой. Онолын хувьд энэ нь 320x240 хэмжээтэй 16 битийн өнгөт пикселийг SPI LCD дэлгэц дээр 60 кадр / сек хурдтайгаар дарах боломжтой боловч видео өгөгдлийг унших, декодлоход шаардагдах нэмэлт хугацааг хараахан тооцоолоогүй байна.
  • 1 бит / 4 битийн SD автобус нь SD картыг төрөлхийн протоколоор холбох боломжтой
  • I2S дотоод DAC аудио гаралт
  • Видео болон аудио буферт 100 KB гаруй RAM ашиглах боломжтой
  • JPEG (Motion JPEG тоглох) болон LZW өгөгдлийн шахалтыг тайлах (хөдөлгөөнт-g.webp" />
  • Давхар цөмт хувилбар нь SD картнаас уншсан өгөгдлийг хувааж, кодыг тайлж, SPI LCD руу зэрэгцүүлэн олон үүрэг даалгавар өгч, тоглуулах ажиллагааг сайжруулдаг.

Хязгаарлалт

  • 16 битийн хэмжээтэй 320x240 хэмжээтэй хоёр хүрээтэй буфертай байхын тулд дотоод санах ой хангалтгүй байгаа нь олон талт дизайныг хязгаарласан болно. Энэ нь гадаад RAM -тай бага зэрэг даван туулж чаддаг боловч дотоод RAM -аас удаан байдаг
  • mp4 видеог тайлах хангалттай хүчин чадал байхгүй байна
  • ESP32-ийн бүх хувилбарууд 2 цөмтэй байдаггүй, олон даалгаврын жишээ нь зөвхөн хоёр цөмт хувилбарт ашиг тустай байдаг

Лавлагаа:

Алхам 2: Видео формат

RGB565

Эсвэл 16 битийн өнгө гэдэг нь MCU болон өнгөт дэлгэцийн хоорондох холболтод ихэвчлэн хэрэглэгддэг түүхий мэдээллийн формат юм. Өнгөт пиксел бүрийг 16 битийн утгаар илэрхийлдэг бөгөөд эхний 5 бит нь улаан, 6 битийн дараа ногоон, дараа нь 5 битийн цэнхэр өнгөтэй байна. 16 битийн утга нь 65536 өнгөний өөрчлөлт хийх боломжтой тул үүнийг 64K өнгө гэж нэрлэдэг. Тиймээс 1 минутын 320x240@30 fps видео нь: 16 * 320 * 240 * 30 * 60 = 2211840000 бит = 276480000 байт буюу 260 МБ -аас дээш хэмжээтэй байх болно.

Хөдөлгөөнт GIF

Энэ бол 1990 -ээд оноос хойш вэб дээр түгээмэл хэрэглэгддэг файлын формат юм. Энэ нь дэлгэц бүрийн өнгөний өөрчлөлтийг 256 өнгө хүртэл хязгаарладаг бөгөөд өмнөх хүрээтэй ижил өнгөтэй пикселийг дахин хадгалдаггүй. Тиймээс энэ нь файлын хэмжээг ихээхэн хэмжээгээр бууруулж чадна, ялангуяа анимацийн хүрээ бүр хэт их нарийн ширийн зүйлийг өөрчилдөггүй. LZW шахалт нь 1990 -ээд оны компьютерээр код тайлах чадвартай байхаар бүтээгдсэн тул ESP32 нь түүнийг задлахад хангалттай боловсруулалтын чадвартай байдаг.

Хөдөлгөөн JPEG

Эсвэл M-JPEG / MJPEG гэж нэрлэдэг нь хязгаарлагдмал боловсруулалтын хүчин чадалтай видео бичлэг хийх тоног төхөөрөмжийн хувьд түгээмэл хэрэглэгддэг видео шахалтын формат юм. Энэ нь үнэндээ JPEG фрэймийн нэгдэл юм. MPEG эсвэл MP4, Motion JPEG -тэй харьцуулахын тулд фрэймийг урьдчилан тооцоолох нарийн тооцоолол хийх шаардлагагүй, хүрээ бүр бие даасан байдаг. Тиймээс кодлох, декодлоход бага нөөц шаардагдана.

Лавлагаа:

en.wikipedia.org/wiki/List_of_monochrome_a…

en.wikipedia.org/wiki/GIF

en.wikipedia.org/wiki/Motion_JPEG

Алхам 3: Аудио формат

PCM

Дижитал аудионы мэдээллийн формат. ESP32 DAC нь 16 битийн гүнийг ашигладаг бөгөөд энэ нь 16 битийн өгөгдөл бүр дижитал түүвэрлэсэн аналог дохиог илэрхийлдэг гэсэн үг юм. Ихэнх видео болон дууны аудио нь 44100 МГц давтамжийг ашигладаг бөгөөд энэ нь секунд тутамд 44100 түүвэрлэсэн аналог дохио гэсэн үг юм. Тиймээс, 1 минутын моно аудио PCM түүхий өгөгдлийн хэмжээ: 16 * 44100 * 60 = 42336000 бит = 5292000 байт эсвэл 5 МБ -аас их байх болно. Стерео аудионы хэмжээ хоёр дахин нэмэгдэх болно, өөрөөр хэлбэл 10 MB -аас дээш

MP3

MPEG Layer 3 нь 1990 -ээд оноос дууг шахахад өргөн хэрэглэгддэг шахсан аудио формат юм. Энэ нь файлын хэмжээг түүхий PCM форматын аравны нэг хүртэл бууруулах боломжтой

Лавлагаа:

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

en.wikipedia.org/wiki/MP3

Алхам 4: Хөрвүүлэлтийг форматлах

Энэхүү төсөл нь FFmpeg ашиглан видеог ESP32 унших формат руу хөрвүүлдэг.

Хэрэв хараахан болоогүй бол FFmpeg -ийг албан ёсны сайт дээрээ татаж аваад суулгана уу:

PCM аудио болгон хөрвүүлэх

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

MP3 аудио руу хөрвүүлэх

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

RGB565 руу хөрвүүлэх

ffmpeg -i input.mp4 -vf "fps = 9, масштаб = -1: 176: тугнууд = lanczos, газар тариалан = 220: in_h: (in_w -220)/2: 0" -c: v rawvideo -pix_fmt rgb565be 220_9fps. rgb

Хөдөлгөөнт-g.webp

ffmpeg -i input.mp4 -vf "fps = 15, масштаб = -1: 176: тугууд = lanczos, тайрах = 220: in_h: (in_w -220)/2: 0, хуваах [s0] [s1]; [s0] palettegen [p]; [s1] [p] paletteuse "-loop -1 220_15fps.gif

Motion JPEG руу хөрвүүлэх

ffmpeg -i input.mp4 -vf "fps = 30, масштаб = -1: 176: туг = lanczos, тайрах = 220: in_h: (in_w -220)/2: 0" -q: v 9 220_30fps.mjpeg

Тэмдэглэл:

FFmpeg хөрвүүлсэн хөдөлгөөнт-g.webp" />

Алхам 5: Тоног төхөөрөмжийн бэлтгэл

Тоног төхөөрөмжийн бэлтгэл
Тоног төхөөрөмжийн бэлтгэл

ESP32 хөгжлийн самбар

Аливаа хоёр цөмт ESP32 хөгжүүлэгч самбар зүгээр байх ёстой, энэ удаад би TTGO ESP32-Micro ашиглаж байна.

Өнгөт дэлгэц

Arduino_GFX -ийн дэмждэг өнгөт дэлгэц нь зүгээр байх ёстой, энэ удаад би SD картны үүртэй ILI9225 хавтанг ашиглаж байна.

Та Arduino_GFX дэмждэг өнгөт дэлгэцийн жагсаалтыг Github дээрээс олж болно.

github.com/moononournation/Arduino_GFX

SD карт

Аливаа SD карт зүгээр байх ёстой, энэ удаад би SD адаптертай SanDisk "хэвийн хурдтай" 8 ГБ хэмжээтэй micro SD ашиглаж байна.

Аудио

Хэрэв та зөвхөн чихэвч ашиглахыг хүсвэл чихэвчний зүүг 26 -р зүүгээр холбоод GND аудиог сонсох боломжтой. Эсвэл та чанга яригчаар аудио тоглуулахын тулд жижиг өсгөгч ашиглаж болно.

Бусад

Зарим талх, талхны утас

Алхам 6: SD интерфэйс

SD интерфэйс
SD интерфэйс
SD интерфэйс
SD интерфэйс

ILI9225 LCD таслах самбар нь SD crd үүр таслах голтой байв. Үүнийг SPI автобус эсвэл 1 битийн SD автобус болгон ашиглаж болно. Өмнөх зааварчилгаанд дурдсанчлан би 1 битийн SD автобус ашиглахыг илүүд үздэг тул энэ төсөл нь 1 битийн SD автобусанд суурилах болно.

Алхам 7: Үүнийг хамтад нь хий

Үүнийг хамтад нь тавь
Үүнийг хамтад нь тавь
Үүнийг хамтад нь тавь
Үүнийг хамтад нь тавь
Үүнийг хамтад нь тавь
Үүнийг хамтад нь тавь

Дээрх зургууд нь энэ төсөлд миний ашиглаж буй туршилтын платформыг харуулж байна. Цагаан талхны самбарыг 3 хэмжээст хэвлэмэл хэлбэрээр татаж авах боломжтой:

Бодит холболт нь таны гарт байгаа тоног төхөөрөмжөөс хамаарна.

Энд холболтын хураангуй байна:

ESP32

Vcc -> LCD Vcc GND -> LCD GND GPIO 2 -> SD D0/MISO -> 1k эсэргүүцэл -> 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

Лавлагаа:

Алхам 8: Хөтөлбөр

Хөтөлбөр
Хөтөлбөр

Arduino IDE

Хэрэв та хараахан хийгээгүй байгаа бол Arduino IDE -г татаж аваад суулгаарай.

www.arduino.cc/en/main/software

ESP32 дэмжлэг

Хэрэв та хараахан хийгээгүй байгаа бол ESP32 дэмжлэгийг нэмэхийн тулд суулгах зааврыг дагана уу.

github.com/espressif/arduino-esp32

Arduino_GFX номын сан

Хамгийн сүүлийн үеийн Arduino_GFX номын санг татаж авах: ("Clone or Download" -> "ZIP татаж авах" товчийг дарна уу)

github.com/moononournation/Arduino_GFX

Arduino IDE дахь номын санг импортлох. (Arduino IDE "Sketch" цэс -> "Номын санг оруулах" -> ". ZIP номын сан нэмэх" -> татаж авсан ZIP файлыг сонгох)

ESP8266 аудио

Хамгийн сүүлийн ESP8266Audio номын санг татаж авах: ("Clone or Download" -> "ZIP татаж авах" товчийг дарна уу)

github.com/earlephilhower/ESP8266Audio

Arduino IDE дахь номын санг импортлох. (Arduino IDE "Sketch" цэс -> "Номын санг оруулах" -> ". ZIP номын сан нэмэх" -> татаж авсан ZIP файлыг сонгох)

RGB565_video видео кодын жишээ код

Хамгийн сүүлийн үеийн RGB565_video дээжийн кодыг татаж авах: ("Clone or Download" -> "ZIP татаж авах" дээр дарна уу)

github.com/moononournation/RGB565_video

SD картны мэдээлэл

Хөрвүүлсэн файлуудыг SD карт руу хуулж, LCD картны үүрэнд оруулна уу

Эмхэтгэх, байршуулах

  1. SDMMC_MJPEG_video_PCM_audio_dualSPI_multitask.ino -г Arduino IDE дээр нээнэ үү.
  2. Хэрэв та ILI9225 -ийг ашиглахгүй байгаа бол ангийн нэрийг засахын тулд шинэ ангийн кодыг (35 -р мөр орчим) өөрчилнө үү
  3. Arduino IDE "Байршуулах" товчийг дарна уу
  4. Хэрэв та програмыг байршуулж чадаагүй бол ESP32 GPIO 2 болон SD D0/MISO хоорондох холболтыг салгаад үзээрэй.
  5. Хэрэв та чиглэлийг буруу гэж үзвэл шинэ ангийн кодын "эргүүлэх" утгыг (0-3) өөрчилнө үү
  6. Хэрэв програм сайн ажиллаж байгаа бол та SDMMC_* ашиглан өөр эхлэлийг туршиж үзээрэй.
  7. Хэрэв танд SD картны оролт байхгүй эсвэл FFmpeg суулгаагүй бол та SPIFFS_* жишээг туршиж үзэх боломжтой.

Алхам 9: жишиг үзүүлэлт

Жишиг
Жишиг

Өөр өөр видео (220x176) болон аудио (44100 МГц) форматын гүйцэтгэлийн хураангуйг энд харуулав.

Формат Секундэд хүрээ (fps)
MJPEG + PCM 30
15
RGB565 + PCM 9
MJPEG + MP3 24

Тэмдэглэл:

  • MJPEG + PCM нь илүү өндөр хурдаар хүрэх боломжтой боловч 30 секундээс илүү жижиг дэлгэц дээр тоглох шаардлагагүй юм.
  • RGB565 нь код тайлах процесс шаарддаггүй боловч өгөгдлийн хэмжээ хэт том бөгөөд SD, 4 битийн SD автобус, илүү хурдан SD картаас өгөгдөл ачаалахад маш их цаг хугацаа шаардагддаг бөгөөд үүнийг бага зэрэг сайжруулж чадна (зэрлэг таамаглал нь ойролцоогоор 12 fps хүрэх боломжтой)
  • MP3 код тайлах процесс хараахан оновчтой болоогүй байгаа бөгөөд одоо MP3 код тайлах үндсэн 0, видео тоглуулахад үндсэн 1 -ийг зориулав

Алхам 10: Аз жаргалтай тоглох

Аз жаргалтай тоглох!
Аз жаргалтай тоглох!

Одоо та ESP32 ашиглан видео, аудио тоглуулах боломжтой бөгөөд энэ нь олон боломжийг нээж өгсөн юм!

Хожим нь бяцхан чимэг зурагт хийх болно гэж бодож байна …

Зөвлөмж болгож буй: