Мазмуну:
- 1 -кадам: ESP32 өзгөчөлүктөрү жана чектөөлөрү
- 2 -кадам: Видео форматы
- 3 -кадам: Аудио форматы
- 4 -кадам: Формат Конверсиясы
- 5 -кадам: Аппараттык даярдоо
- 6 -кадам: SD интерфейси
- 7 -кадам: Аны бирге кой
- 8 -кадам: Программа
- 9 -кадам: Бенчмарк
- 10 -кадам: бактылуу ойноо
Video: ESP32 менен видеону ойнотуу: 10 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-31 10:22
Бул Instructables ESP32 менен видео жана аудио ойнотуу жөнүндө бир нерсени көрсөтөт.
1 -кадам: ESP32 өзгөчөлүктөрү жана чектөөлөрү
Өзгөчөлүктөрү
- 4 SPI автобус, 2 SPI автобус колдонуучу мейкиндиги үчүн жеткиликтүү, алар SPI2 жана SPI3 же HSPI жана VSPI деп аталат. Эки SPI автобусу эң көп 80 МГц чуркай алат. Теориялык жактан алганда, ал 320x240 16-бит түстүү пикселдерди SPI ЖКга 60 кадр / сек ылдамдыкта түртүп кое алат, бирок ал видео маалыматтарын окуу жана декоддоо үчүн керектүү болгон убакытты эсептей элек.
- 1-бит / 4-бит SD автобус SD протоколдо туташа алат
- I2S ички DAC аудио чыгаруу
- видео жана аудио буфер үчүн жеткиликтүү 100 КБдан ашык RAM
- JPEG (Motion JPEGти ойнотуу) жана LZW маалыматын кысуу (анимацияланган GIFти ойнотуу) үчүн жетиштүү иштетүү күчү
- Эки ядролук версия SD картадан окулган маалыматты бөлүп, декоддоп жана SPI ЖКга параллелдүү көп тапшырмаларга түртө алат жана ойнотуунун аткарылышын жогорулатат.
Чектөөлөр
- 16-бит түстүү 320x240 үчүн эки кадрдык буферге ээ болуу үчүн ички оперативдүү RAM жетишсиз, ал көп функциялуу дизайнды чектеген. Бул тышкы PSRAM менен бир аз жеңе алат, бирок ал ички RAMга караганда жайыраак
- mp4 видеонун кодун чечүү үчүн иштетүү күчү жетишсиз
- бардык ESP32 версиясында 2 ядро жок, көп тапшырмалуу үлгү эки ядролук версияда гана пайда алып келет
Шилтеме:
2 -кадам: Видео форматы
RGB565
Же 16-бит түс деп аталат, бул MCU менен түстүү дисплейдин ортосундагы байланышта кеңири колдонулат. Ар бир түстүү пиксель 16-бит мааниси менен көрсөтүлөт, биринчи 5-бит кызыл, 6-биттен кийин жашыл, андан кийин 5-бит көк мааниге ээ. 16-бит мааниси 65536 түстү өзгөртө алат, ошондуктан аны 64K түстөр деп да аташат. Ошентип, 1 мүнөт 320x240@30 кадр / сек видео көлөмү болот: 16 * 320 * 240 * 30 * 60 = 2211840000 бит = 276480000 байт же 260 МБ
Анимацияланган GIF
Бул 1990 -жылдан бери интернетте таралган файл форматы. Ал 256 түскө чейин ар бир экрандын түсүнүн өзгөрүшүн чектейт жана пикселди мурунку кадрдагыдай түстө сактабайт. Ошентип, ал файлдын көлөмүн бир топ кыскартат, айрыкча, ар бир анимация кадры өтө майда -чүйдөсүнө чейин өзгөрбөйт. LZW кысуу 1990 -жылдардын компьютери аркылуу декоддолгон жөндөмдүү болуп иштелип чыккан, ошондуктан ESP32 реалдуу убакытта аны чечмелөө үчүн жетиштүү кайра иштетүүчү күчкө ээ.
Motion 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 Мбдан ашат
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
Жандуу GIFке айландыруу
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 анимацияланган GIFти кээ бир веб -куралдар аркылуу оптималдаштырса болот, сиз аны табуу үчүн-g.webp" />
5 -кадам: Аппараттык даярдоо
ESP32 Dev Board
Бардык эки ядролуу ESP32 иштеп чыгуучу тактасы жакшы болушу керек, бул жолу мен TTGO ESP32-Micro колдонуп жатам.
Түстүү дисплей
Arduino_GFX колдогон ар кандай түстүү дисплей жакшы болушу керек, бул жолу мен SDI картанын уячасы бар ILI9225 тактасын колдонуп жатам.
Сиз Githubдан Arduino_GFX колдоого алынган түстүү дисплей тизмесин таба аласыз:
github.com/moononournation/Arduino_GFX
SD карта
Бардык SD карта жакшы болушу керек, бул жолу мен SD адаптери бар SanDisk "кадимки ылдамдыкта" 8 ГБ микро SD колдонуп жатам.
Аудио
Эгерде сиз гарнитураны гана колдонууну кааласаңыз, гарнитура төөнөгүчтөрүн 26 -пинге туташтырыңыз жана GND аудиону уга алат. Же кичинекей күчөткүчтү колдонуп, аудио менен динамикти ойното аласыз.
Башкалар
Кээ бир столдор жана нан зымдары
6 -кадам: 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 -> ЖК SCK GPIO 19 -> ЖК MISO GPIO 22 -> LCD LED GPIO 23 -> LCD MOSI GPIO 27 -> LCD DC/RS GPIO 33 -> LCD RST
Шилтеме:
8 -кадам: Программа
Arduino IDE
Ардуино IDEди жүктөңүз жана орнотуңуз, эгер сиз муну кыла элек болсоңуз:
www.arduino.cc/en/main/software
ESP32 колдоо
Эгерде сиз азырынча кыла элек болсоңуз, ESP32 колдоосун кошуу үчүн Орнотуу Нускамаларын аткарыңыз:
github.com/espressif/arduino-esp32
Arduino_GFX китепканасы
Акыркы Arduino_GFX китепканаларын жүктөп алыңыз: ("Clone or Download" -> "ZIP Download" баскычын басыңыз)
github.com/moononournation/Arduino_GFX
Китепканаларды Arduino IDEге импорттоо. (Arduino IDE "Sketch" Менюсу -> "Китепкананы кошуу" -> "ZIP Китепкана кошуу" -> жүктөлүп алынган ZIP файлын тандоо)
ESP8266Аудио
Эң акыркы ESP8266Audio китепканаларын түшүрүү: ("Clone or Download" -> "ZIP Download" баскычын басыңыз)
github.com/earlephilhower/ESP8266Audio
Китепканаларды Arduino IDEге импорттоо. (Arduino IDE "Sketch" Менюсу -> "Китепкананы кошуу" -> "ZIP Китепкана кошуу" -> жүктөлүп алынган ZIP файлын тандоо)
RGB565_video үлгү коду
Акыркы RGB565_video үлгү кодун түшүрүңүз: ("Clone or Download" -> "ZIP Download" баскычын басыңыз)
github.com/moononournation/RGB565_video
SD картанын маалыматы
Которулган файлдарды SD картага көчүрүп, ЖК картанын уясына салыңыз
Түзүү жана Жүктөө
- Arduino IDEде SDMMC_MJPEG_video_PCM_audio_dualSPI_multitask.ino ачуу
- Эгерде сиз ILI9225 колдонбосоңуз, класстын атын оңдоо үчүн жаңы класс кодун (35 -саптын тегерегинде) өзгөртүңүз
- Arduino IDE "Жүктөө" баскычын басыңыз
- Эгерде сиз программаны жүктөй албасаңыз, ESP32 GPIO 2 менен SD D0/MISO ортосундагы байланышты үзүп көрүңүз.
- Эгер ориентация туура эмес деп тапсаңыз, жаңы класстын кодундагы "айлануу" маанисин (0-3) өзгөртүңүз
- Эгерде программа жакшы иштесе, SDMMC_ менен башталган башка үлгүнү колдонуп көрсөңүз болот*
- Эгерде сизде SD картанын уячасы жок болсо же сизде FFmpeg орнотулбаса, дагы эле SPIFFS_* мисалын колдонуп көрсөңүз болот
9 -кадам: Бенчмарк
Бул жерде ар кандай видео (220x176) жана аудио (44100 МГц) форматындагы аткаруу резюмеси:
Формат | Секундуна кадр (секундасына) |
MJPEG + PCM | 30 |
15 | |
RGB565 + PCM | 9 |
MJPEG + MP3 | 24 |
Эскертүү:
- MJPEG + PCM жогорку ылдамдыкка жете алат, бирок кичинекей экранда 30 кадрдан ашпашы керек
- RGB565 декоддоо процессин талап кылбайт, бирок маалыматтын өлчөмү өтө чоң жана SD, 4-биттик SD автобусу жана тезирээк SD картадан маалыматтарды жүктөөдө бир аз жакшырта алат (жапайы божомол 12 кадрдын тегерегине жетиши мүмкүн)
- MP3 декоддоо процесси азырынча оптималдаштырыла элек, ал азыр MP3 декоддоо үчүн 0 жана видеону ойнотуу үчүн ядро 1ге арналат
10 -кадам: бактылуу ойноо
Эми сиз ESP32 менен видео жана аудио ойной аласыз, бул көптөгөн мүмкүнчүлүктөрдү ачты!
Кийинчерээк кичинекей винтаждык телевизор жасайм деп ойлойм …
Сунушталууда:
Talking Arduino - Ардуино менен MP3 ойнотуу модулу жок - PCMди колдонуу менен Arduinoдон Mp3 файлын ойнотуу: 6 кадам
Talking Arduino | Ардуино менен MP3 ойнотуу модулу жок | PC файлын колдонуу менен Arduinoдон Mp3 файлын ойнотуу: Бул көрсөтмөлөрдө биз ардуино менен mp3 файлды эч кандай аудио модулду колдонбостон ойнотууну үйрөнөбүз, бул жерде биз 8 кГц жыштыктагы 16 бит PCM ойногон Arduino үчүн PCM китепканасын колдонобуз
CD ойноткучсуз, AIди жана YouTubeду колдонуу менен CDлерди ойнотуу: 10 кадам (сүрөттөр менен)
CD ойноткучсуз, AIди жана YouTubeду колдонуу менен CD ойнотуңуз: CDлериңизди ойноткуңуз келет, бирок CD ойноткучуңуз жокпу? Дисктериңизди жыртканга убактыңыз болгон жокпу? Аларды айрып салышты, бирок файлдар керек болгондо жеткиликсизби? Эч кандай көйгөй жок. AI (жасалма интеллект) CDиңизди аныктап, YouTube аны ойнотсун! Мен Android тиркемесин жаздым
Step Step мотору менен ырларды ойнотуу !!: 11 кадам (сүрөттөр менен)
Ырларды Step Motor колдонуп ойнотуңуз !!: Бул проект степпердик мотор менен эки башка жол менен иштешүүгө мүмкүндүк бере турган жөнөкөй динамикалык интерфейсти долбоорлоо жөнүндө. Биринчи интерфейс stepper моторунун багытын жана ылдамдыгын көзөмөлдөйт. жөнөкөй GUI, ал
Төрт кадам менен экрандуу видеону кантип жасоо керек: 4 кадам (сүрөттөр менен)
Төрт кадам менен экрандуу видеону кантип жасаса болот: Биз көбүнчө бир эле кишинин сахнада эки жолу телеберүүдө көрсөтүүсүн көрөбүз. А биз билгенден актёрдун эгиз бир тууганы жок. Ырчылык чеберчиликтерин салыштыруу үчүн бир экранда эки ыр ырдалганын да көрдүк. Бул бөлүүнүн күчү
Raspberry Pi менен ойнотуу жаздыргычы: 7 кадам (сүрөттөр менен)
Raspberry Pi менен ойнотуу жаздыргычы: Саламатсыздарбы, бул көрсөтмөдө мен Raspberry Pi аркылуу кантип ойнотуу жаздыргыч жасаганын түшүндүрөм. Бул түзмөк B+Raspberry Pi модели, үстүндө 7 баскыч, Pi'дин USB портторунун бирине туташкан динамик жана башка микрофонго туташкан