فهرست مطالب:
- مرحله 1: ویژگی ها و محدودیت های ESP32
- مرحله 2: قالب ویدیو
- مرحله 3: قالب صوتی
- مرحله 4: تبدیل فرمت
- مرحله 5: آماده سازی سخت افزار
- مرحله 6: رابط SD
- مرحله 7: آن را کنار هم قرار دهید
- مرحله 8: برنامه
- مرحله 9: معیار مقایسه
- مرحله دهم: بازی خوشحالم
تصویری: پخش ویدئو با ESP32: 10 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-31 10:19
این دستورالعمل ها چیزی در مورد پخش ویدئو و صدا با ESP32 نشان می دهد.
مرحله 1: ویژگی ها و محدودیت های ESP32
امکانات
- 4 گذرگاه SPI ، 2 گذرگاه SPI برای فضای کاربر در دسترس است ، آنها SPI2 و SPI3 هستند یا HSPI و VSPI نامیده می شوند. هر دو گذرگاه SPI می توانند حداکثر 80 مگاهرتز کار کنند. از لحاظ تئوری می تواند پیکسل های رنگی 320x240 16 بیتی را با سرعت 60 فریم بر ثانیه به SPI LCD منتقل کند ، اما هنوز زمان سربار مورد نیاز برای خواندن و رمزگشایی داده های ویدئو را محاسبه نکرده است.
- گذرگاه 1 بیت / 4 بیت SD می تواند کارت SD را در پروتکل اصلی متصل کند
- خروجی داخلی DAC I2S
- بیش از 100 کیلوبایت RAM برای بافر تصویری و صوتی موجود است
- قدرت پردازش کافی برای رمزگشایی JPEG (پخش Motion JPEG) و فشرده سازی داده LZW (پخش-g.webp" />
- نسخه دو هسته ای می تواند داده های خوانده شده را از کارت SD تقسیم کرده ، رمزگشایی کرده و به LCD SPI به چند کار موازی برساند و عملکرد پخش را افزایش دهد
محدودیت ها
- RAM داخلی کافی برای داشتن بافر دو فریم برای 320x240 در رنگ 16 بیتی وجود ندارد ، طراحی چند وظیفه ای را محدود کرد. این می تواند با 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 مگابایت
این یک قالب فایل رایج در وب از دهه 1990 است. تنوع رنگ را برای هر صفحه تا 256 رنگ محدود می کند و پیکسل را به همان رنگ قاب قبلی ذخیره نمی کند. بنابراین می تواند حجم فایل را بسیار کاهش دهد ، به ویژه هنگامی که هر فریم متحرک جزئیات زیادی را تغییر ندهد. فشرده سازی LZW قادر به رمزگشایی توسط کامپیوترهای دهه 1990 است ، بنابراین ESP32 همچنین دارای قدرت پردازش کافی برای رمزگشایی آن در زمان واقعی است.
حرکت JPEG
یا M-JPEG / MJPEG فرمت فشرده سازی رایج رایانه برای سخت افزار ضبط ویدئو با قدرت پردازش محدود است. این در واقع ترکیبی از فریم های JPEG است. در مقایسه با MPEG یا MP4 ، Motion JPEG بدون نیاز به تکنیک محاسباتی فشرده پیش بینی interframe ، هر فریم مستقل است. بنابراین برای رمزگذاری و رمزگشایی به منابع کمتری نیاز است.
مرجع.:
fa.wikipedia.org/wiki/List_of_monochrome_a…
fa.wikipedia.org/wiki/GIF
fa.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 خام کاهش دهد
مرجع.:
fa.wikipedia.org/wiki/Pulse-code_modulatio…
fa.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 ، scale = -1: 176: flags = lanczos ، crop = 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 ، scale = -1: 176: flags = lanczos ، crop = 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 ، scale = -1: 176: flags = lanczos ، crop = 220: in_h: (in_w -220)/2: 0" -q: v 9 220_30fps.mjpeg
توجه داشته باشید:
FFmpeg متحرک-g.webp" />
مرحله 5: آماده سازی سخت افزار
ESP32 Dev Board
هر برد دو هسته ای ESP32 dev باید خوب باشد ، این بار من از TTGO ESP32-Micro استفاده می کنم.
نمایش رنگی
هر صفحه نمایش رنگی که از Arduino_GFX پشتیبانی می کند باید خوب باشد ، این بار من از یک برد شکست ILI9225 با شکاف کارت SD استفاده می کنم.
شما می توانید لیست نمایش رنگ Arduino_GFX را در Github پیدا کنید:
github.com/moononournation/Arduino_GFX
کارت SD
هر کارت SD باید خوب باشد ، این بار من از یک کارت حافظه microSD SanDisk 8 گیگابایتی با آداپتور SD استفاده می کنم.
سمعی
اگر می خواهید فقط از هدفون استفاده کنید ، به سادگی پین های هدفون را به پین 26 وصل کنید و GND می تواند صدا را بشنود. یا می توانید از یک تقویت کننده کوچک برای پخش صدا با بلندگو استفاده کنید.
دیگران
برخی از تخته های نان و سیم های تخته نان
مرحله 6: رابط SD
برد بریکت ILI9225 LCD همچنین شامل پین های برک آوت شکاف SD crd بود. می توان از آن به عنوان گذرگاه SPI یا گذرگاه 1 بیتی SD استفاده کرد. همانطور که در دستورالعمل های قبلی من ذکر شد ، من ترجیح می دهم از گذرگاه 1 بیتی SD استفاده کنم ، بنابراین این پروژه بر روی گذرگاه 1 بیتی SD قرار می گیرد.
مرحله 7: آن را کنار هم قرار دهید
تصاویر بالا سکوی آزمایشی را که در این پروژه استفاده می کنم نشان می دهد. صفحه نان سفید چاپ سه بعدی است ، می توانید آن را در thingiverse بارگیری و چاپ کنید:
اتصال واقعی بستگی به سخت افزاری دارد که در دست دارید.
در اینجا خلاصه اتصال است:
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
Ref.:
مرحله 8: برنامه
آردوینو IDE
اگر هنوز Arduino IDE را انجام نداده اید بارگیری و نصب کنید:
www.arduino.cc/fa/main/software
پشتیبانی از ESP32
اگر هنوز این کار را انجام نداده اید ، دستورالعمل های نصب را برای افزودن پشتیبانی ESP32 دنبال کنید:
github.com/espressif/arduino-esp32
کتابخانه Arduino_GFX
بارگیری آخرین کتابخانه های Arduino_GFX: ("Clone or Download" -> "Download ZIP" را فشار دهید)
github.com/moononournation/Arduino_GFX
وارد کردن کتابخانه ها در Arduino IDE. (منوی Arduino IDE "Sketch" -> "Include Library" -> "Add. ZIP Library" -> انتخاب فایل ZIP بارگیری شده)
ESP8266 صدا
بارگیری آخرین کتابخانه های ESP8266Audio: ("Clone or Download" -> "Download ZIP" را فشار دهید)
github.com/earlephilhower/ESP8266Audio
وارد کردن کتابخانه ها در Arduino IDE. (منوی Arduino IDE "Sketch" -> "Include Library" -> "Add. ZIP Library" -> انتخاب فایل ZIP بارگیری شده)
کد نمونه RGB565_video
بارگیری آخرین کد نمونه RGB565_video: ("Clone or Download" -> "Download ZIP" را فشار دهید)
github.com/moononournation/RGB565_video
داده های کارت SD
فایلهای تبدیل شده را به کارت SD کپی کرده و در شکاف کارت LCD قرار دهید
کامپایل و بارگذاری
- SDMMC_MJPEG_video_PCM_audio_dualSPI_multitask.ino را در Arduino IDE باز کنید
- اگر از ILI9225 استفاده نمی کنید ، کد کلاس جدید (حدود خط 35) را برای تصحیح نام کلاس تغییر دهید
- دکمه "بارگذاری" Arduino IDE را فشار دهید
- اگر برنامه را بارگذاری نکردید ، اتصال ESP32 GPIO 2 و SD D0/MISO را جدا کنید
- اگر متوجه شدید که جهت گیری درست نیست ، مقدار "rotation" (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 هنوز بهینه نشده است ، اکنون هسته 0 را برای رمزگشایی MP3 و هسته 1 را برای پخش ویدئو اختصاص داده است
مرحله دهم: بازی خوشحالم
اکنون می توانید ویدئو و صدا را با ESP32 خود پخش کنید ، بسیاری از امکانات را باز کرد!
فکر می کنم بعداً یک تلویزیون کوچک قدیمی بسازم…
توصیه شده:
ESP32-CAM ساخت اتومبیل ربات خود با پخش مستقیم ویدئو: 4 مرحله
ESP32-CAM ساخت اتومبیل ربات خود با پخش مستقیم ویدئو: ایده این است که ماشین ربات را تا آنجا که ممکن است ارزان قیمت کنید. بنابراین امیدوارم با دستورالعمل های دقیق خود و اجزای انتخاب شده برای یک مدل ارزان قیمت ، به یک گروه هدف بزرگ برسم. من می خواهم ایده خود را برای یک ماشین ربات به شما ارائه کنم
شروع کار با ESP32 CAM - پخش ویدئو با استفاده از ESP CAM بر روی Wifi - پروژه دوربین امنیتی ESP32: 8 مرحله
شروع کار با ESP32 CAM | پخش ویدئو با استفاده از ESP CAM بر روی Wifi | پروژه دوربین امنیتی ESP32: امروز نحوه استفاده از این برد جدید CAM ESP32 را یاد می گیریم و چگونه می توانیم آن را کدگذاری کرده و از آن به عنوان یک دوربین امنیتی استفاده کنیم و از طریق وای فای یک ویدئوی جاری را دریافت کنیم
پخش سی دی بدون پخش کننده سی دی ، با استفاده از هوش مصنوعی و یوتیوب: 10 مرحله (همراه با تصاویر)
پخش سی دی بدون پخش کننده سی دی ، با استفاده از هوش مصنوعی و یوتیوب: آیا می خواهید سی دی های خود را پخش کنید اما دیگر سی دی پلیر ندارید؟ آیا وقت نداشتید سی دی های خود را پاره کنید؟ آنها را پاره کرد اما در صورت نیاز فایل ها در دسترس نیستند؟ مشکلی نیست. بگذارید هوش مصنوعی (هوش مصنوعی) سی دی شما را شناسایی کند و یوتیوب آن را پخش کند! من یک برنامه Android برای شما نوشتم
پخش صدا و پخش ویدئو با استفاده از Raspberry Pi 3 .: 6 مرحله
پخش صوتی و پخش ویدئو با استفاده از Raspberry Pi 3: اصلی ترین ابزار این پروژه پخش صدا به Raspberry Pi 3 از هر دستگاهی است که به شبکه WiFi مشترک متصل شده است و تهیه ویدیو از Raspberry Pi 3 به هر دستگاه متصل به یک شبکه WiFi مشترک
مخزن تمشک با رابط وب و پخش ویدئو: 8 مرحله (همراه با تصاویر)
مخزن تمشک با رابط وب و پخش ویدئو: ما خواهیم دید که چگونه یک مخزن WiFi کوچک ، قادر به کنترل از راه دور وب و پخش ویدئو ، متوجه شده ام. این برنامه آموزشی است که نیاز به دانش اولیه برنامه نویسی الکترونیکی و نرم افزاری دارد. به همین دلیل من انتخاب کرده ام