সুচিপত্র:
- ধাপ 1: ESP32 বৈশিষ্ট্য এবং সীমাবদ্ধতা
- ধাপ 2: ভিডিও ফরম্যাট
- ধাপ 3: অডিও ফরম্যাট
- ধাপ 4: রূপান্তর রূপান্তর
- ধাপ 5: হার্ডওয়্যার প্রস্তুতি
- ধাপ 6: এসডি ইন্টারফেস
- ধাপ 7: এটি একসাথে রাখুন
- ধাপ 8: প্রোগ্রাম
- ধাপ 9: বেঞ্চমার্ক
- ধাপ 10: খুশি বাজানো
ভিডিও: ESP32 এর সাথে ভিডিও চালান: 10 টি ধাপ (ছবি সহ)
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-31 10:17
এই নির্দেশাবলী ESP32 এর সাথে ভিডিও এবং অডিও চালানোর বিষয়ে কিছু দেখায়।
ধাপ 1: ESP32 বৈশিষ্ট্য এবং সীমাবদ্ধতা
বৈশিষ্ট্য
- 4 SPI বাস, 2 SPI বাস ব্যবহারকারীর জায়গার জন্য উপলব্ধ, সেগুলি SPI2 এবং SPI3 বা HSPI এবং VSPI নামে পরিচিত। উভয় এসপিআই বাস সর্বাধিক 80 মেগাহার্টজ চলতে পারে। তাত্ত্বিকভাবে এটি 60 fps এ 320x240 16-বিট কালার পিক্সেলকে SPI LCD তে ধাক্কা দিতে পারে, কিন্তু ভিডিও ডেটা পড়ার এবং ডিকোড করার জন্য এটি প্রয়োজনীয় সময় ওভারহেড এখনও গণনা করেনি।
- 1-বিট / 4-বিট এসডি বাস স্থানীয় প্রোটোকলে এসডি কার্ড সংযুক্ত করতে পারে
- I2S অভ্যন্তরীণ DAC অডিও আউটপুট
- 100 KB র্যাম ভিডিও এবং অডিও বাফারের জন্য উপলব্ধ
- JPEG (প্লে মোশন JPEG) এবং LZW ডেটা কম্প্রেশন (অ্যানিমেটেড-g.webp" />
- ডুয়াল কোর ভার্সন এসডি কার্ড থেকে পড়া ডাটা বিভক্ত করতে পারে, ডিকোড করতে পারে এবং এসপিআই এলসিডি-তে ধাক্কা দিয়ে সমান্তরাল মাল্টি-টাস্ক করতে পারে এবং প্লেব্যাকের কর্মক্ষমতা বৃদ্ধি করতে পারে
সীমাবদ্ধতা
- 16-বিট রঙে 320x240 এর জন্য ডাবল ফ্রেম বাফারের জন্য যথেষ্ট অভ্যন্তরীণ র 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 MB এর বেশি
অ্যানিমেটেড জিআইএফ
এটি 1990 -এর দশক থেকে ওয়েবে একটি সাধারণ ফাইল ফরম্যাট। এটি প্রতিটি পর্দার জন্য 256 রঙ পর্যন্ত রঙের বৈচিত্র্য সীমাবদ্ধ করে এবং পিক্সেলটি আগের ফ্রেমের মতো একই রঙের পুনরাবৃত্তি করে না। সুতরাং এটি ফাইলের আকার অনেক কমিয়ে দিতে পারে, বিশেষ করে যখন প্রতিটি অ্যানিমেশন ফ্রেম খুব বেশি বিবরণ পরিবর্তন করে না। এলজেডডব্লিউ কম্প্রেশনটি 1990 এর দশকের কম্পিউটার দ্বারা সক্ষম ডিকোড করা হয়েছে, তাই ইএসপি 32 এর রিয়েল টাইমে ডিকোড করার জন্য যথেষ্ট পরিমাণে প্রক্রিয়াকরণ ক্ষমতা রয়েছে।
মোশন জেপিইজি
অথবা বলা হয় M-JPEG / MJPEG সীমিত প্রসেসিং পাওয়ার সহ ভিডিও ক্যাপচার হার্ডওয়্যারের জন্য একটি সাধারণ ভিডিও কম্প্রেশন ফরম্যাট। এটি আসলে কেবল JPEG ফ্রেমের সংমিশ্রণ। এমপিইজি বা এমপি 4 এর সাথে তুলনা করুন, মোশন জেপিইজি ইন্টারফ্রেম পূর্বাভাসের কম্পিউটেশনালভাবে নিবিড় কৌশল প্রয়োজন নেই, প্রতিটি ফ্রেম স্বাধীন। সুতরাং এটি এনকোড এবং ডিকোড করার জন্য কম সম্পদ প্রয়োজন।
রেফারেন্স:
en.wikipedia.org/wiki/List_of_monochrome_a…
en.wikipedia.org/wiki/GIF
en.wikipedia.org/wiki/Motion_JPEG
ধাপ 3: অডিও ফরম্যাট
পিসিএম
ডিজিটাল অডিওর জন্য একটি কাঁচা ডেটা ফরম্যাট। ESP32 DAC 16-বিট বিট গভীরতা ব্যবহার করে, এর মানে হল যে প্রতিটি 16-বিট ডেটা একটি ডিজিটাল নমুনাযুক্ত এনালগ সংকেত উপস্থাপন করে। বেশিরভাগ ভিডিও এবং গানের অডিও সাধারণত 44100 মেগাহার্টজে নমুনা হার ব্যবহার করে, যার অর্থ প্রতি সেকেন্ডের জন্য 44100 নমুনাযুক্ত এনালগ সংকেত। সুতরাং, 1 মিনিটের মোনো অডিও PCM কাঁচা ডাটা সাইজ হবে: 16 * 44100 * 60 = 42336000 বিট = 5292000 বাইট বা 5 MB এর বেশি। স্টেরিও অডিওর আকার দ্বিগুণ হবে, অর্থাৎ 10 এমবি এর বেশি
MP3
এমপিইজি লেয়ার 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, scale = -1: 176: flags = lanczos, crop = 220: in_h: (in_w -220)/2: 0" -c: v rawvideo -pix_fmt rgb565be 220_9fps। আরজিবি
অ্যানিমেটেড-g.webp
ffmpeg -i input.mp4 -vf "fps = 15, scale = -1: 176: flags = lanczos, crop = 220: in_h: (in_w -220)/2: 0, split [s0] [s1]; [s0] প্যালেটেজেন [পি]; [এস 1] [পি] প্যালেটেজ "-লুপ -1 220_15fps.gif
মোশন 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 দেব বোর্ড
যেকোনো ডুয়াল কোর ESP32 dev বোর্ড ঠিক থাকা উচিত, এবার আমি TTGO ESP32-Micro ব্যবহার করছি।
রঙ প্রদর্শন
Arduino_GFX সমর্থন যে কোন রঙ প্রদর্শন ঠিক হওয়া উচিত, এই সময় আমি SD কার্ড স্লট সহ একটি ILI9225 ব্রেকআউট বোর্ড ব্যবহার করছি।
আপনি Github এ Arduino_GFX সমর্থিত রঙ প্রদর্শন তালিকা খুঁজে পেতে পারেন:
github.com/moononournation/Arduino_GFX
এসডি কার্ড
যেকোন এসডি কার্ড ঠিক থাকা উচিত, এবার আমি স্যানডিস্ক "স্বাভাবিক গতি" 8 জিবি মাইক্রো এসডি ব্যবহার করছি এসডি অ্যাডাপ্টারের সাথে।
শ্রুতি
আপনি যদি কেবল হেডফোন ব্যবহার করতে চান, কেবল হেডফোন পিনগুলি 26 পিনে সংযুক্ত করুন এবং GND অডিও শুনতে পারে। অথবা স্পিকারের সাথে অডিও চালানোর জন্য আপনি একটি ছোট এম্প্লিফায়ার ব্যবহার করতে পারেন।
অন্যান্য
কিছু breadboards এবং breadboard তারের
ধাপ 6: এসডি ইন্টারফেস
ILI9225 LCD ব্রেকআউট বোর্ডে একটি SD CRD স্লট ব্রেকআউট পিন অন্তর্ভুক্ত ছিল। এটি SPI বাস বা 1-বিট SD বাস হিসাবে ব্যবহার করা যেতে পারে। আমার আগের নির্দেশাবলীতে উল্লিখিত হিসাবে, আমি 1-বিট এসডি বাস ব্যবহার করতে পছন্দ করি, তাই এই প্রকল্পটি 1-বিট এসডি বাসের উপর ভিত্তি করবে।
ধাপ 7: এটি একসাথে রাখুন
উপরের ছবিগুলি এই প্রকল্পে আমি যে পরীক্ষার প্ল্যাটফর্মটি ব্যবহার করছি তা দেখায়। সাদা ব্রেডবোর্ড থ্রিডি প্রিন্টেড, আপনি এটিকে থিভারিভার্সে ডাউনলোড করে প্রিন্ট করতে পারেন:
আপনার হাতে কোন হার্ডওয়্যার আছে তার উপর প্রকৃত সংযোগ নির্ভর করে।
এখানে সংযোগ সারসংক্ষেপ:
ESP32
Vcc -> LCD Vcc GND -> LCD GND GPIO 2 -> SD D0/MISO -> 1k resistor -> 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 লাইব্রেরি ডাউনলোড করুন: ("ক্লোন বা ডাউনলোড করুন" -> "ZIP ডাউনলোড করুন" টিপুন)
github.com/moononournation/Arduino_GFX
Arduino IDE তে লাইব্রেরি আমদানি করুন। (Arduino IDE "স্কেচ" মেনু -> "লাইব্রেরি অন্তর্ভুক্ত করুন" -> ". ZIP লাইব্রেরি যোগ করুন" -> ডাউনলোড করা ZIP ফাইল নির্বাচন করুন)
ESP8266 অডিও
সর্বশেষ ESP8266 অডিও লাইব্রেরি ডাউনলোড করুন: ("ক্লোন বা ডাউনলোড করুন" -> "ZIP ডাউনলোড করুন" টিপুন)
github.com/earlephilhower/ESP8266Audio
Arduino IDE তে লাইব্রেরি আমদানি করুন। (Arduino IDE "স্কেচ" মেনু -> "লাইব্রেরি অন্তর্ভুক্ত করুন" -> ". ZIP লাইব্রেরি যোগ করুন" -> ডাউনলোড করা ZIP ফাইল নির্বাচন করুন)
RGB565_video নমুনা কোড
সর্বশেষ RGB565_video নমুনা কোড ডাউনলোড করুন: ("ক্লোন বা ডাউনলোড" -> "ZIP ডাউনলোড করুন" টিপুন)
github.com/moononournation/RGB565_video
এসডি কার্ড ডেটা
এসডি কার্ডে রূপান্তরিত ফাইলগুলি অনুলিপি করুন এবং এলসিডি কার্ড স্লটে ertোকান
কম্পাইল করুন এবং আপলোড করুন
- Arduino IDE তে SDMMC_MJPEG_video_PCM_audio_dualSPI_multitask.ino খুলুন
- আপনি যদি ILI9225 ব্যবহার না করেন, তাহলে ক্লাসের নাম সংশোধন করতে নতুন ক্লাস কোড (প্রায় line৫ লাইন) পরিবর্তন করুন
- Arduino IDE "আপলোড" বোতাম টিপুন
- আপনি যদি প্রোগ্রামটি আপলোড করতে ব্যর্থ হন তবে ESP32 GPIO 2 এবং SD D0/MISO এর মধ্যে সংযোগ বিচ্ছিন্ন করার চেষ্টা করুন
- যদি আপনি অরিয়েন্টেশন সঠিক না পান, নতুন ক্লাস কোডে "ঘূর্ণন" মান (0-3) পরিবর্তন করুন
- যদি প্রোগ্রামটি ভালভাবে চলে তাহলে আপনি SDMMC_* দিয়ে অন্য নমুনা শুরু করার চেষ্টা করতে পারেন
- যদি আপনার এসডি কার্ড স্লট না থাকে বা আপনার FFmpeg ইনস্টল না থাকে, আপনি এখনও SPIFFS_* উদাহরণ চেষ্টা করতে পারেন
ধাপ 9: বেঞ্চমার্ক
এখানে বিভিন্ন ভিডিও (220x176) এবং অডিও (44100 মেগাহার্টজ) ফরম্যাটের পারফরম্যান্সের সারাংশ দেওয়া হল:
বিন্যাস | ফ্রেম প্রতি সেকেন্ড (fps) |
MJPEG + PCM | 30 |
15 | |
RGB565 + PCM | 9 |
MJPEG + MP3 | 24 |
বিঃদ্রঃ:
- এমজেপিইজি + পিসিএম উচ্চতর এফপিএস পৌঁছতে পারে তবে এটি 30 এফপিএসের চেয়ে ছোট স্ক্রিনে অপ্রয়োজনীয় খেলা
- RGB565 এর জন্য ডিকোড প্রক্রিয়ার প্রয়োজন হয় না কিন্তু এসডি, 4-বিট এসডি বাস এবং দ্রুত এসডি কার্ড থেকে ডাটা লোড করার সময় ডাটা সাইজ অনেক বড় এবং অনেক বেশি সময় ব্যয় হয় (বুনো অনুমান প্রায় 12 fps এ পৌঁছতে পারে)
- এমপি 3 ডিকোড প্রক্রিয়াটি এখনও অপ্টিমাইজ করা হয়নি, এটি এখন এমপিথ্রি ডিকোডের জন্য কোর 0 এবং ভিডিও চালানোর জন্য কোর 1 উৎসর্গ করা হয়েছে
ধাপ 10: খুশি বাজানো
এখন আপনি আপনার ইএসপি 32 এর সাথে ভিডিও এবং অডিও চালাতে পারেন, এটি অনেক সম্ভাবনা খুলে দিয়েছে!
আমি মনে করি আমি একটি ছোট মদ টিভি পরে তৈরি করব …
প্রস্তাবিত:
ইউকে রিং ভিডিও ডোরবেল প্রো মেকানিক্যাল চিমের সাথে কাজ করছে: 6 টি ধাপ (ছবি সহ)
ইউকে রিং ভিডিও ডোরবেল প্রো মেকানিক্যাল চিমের সাথে কাজ করছে: ****************************************** ********* সরবরাহ, আপনার প্রয়োজন হবে
গেমকোর সাথে অসীম স্তরের প্ল্যাটফর্মার মেককোড আর্কেডের সাথে যান: 5 টি ধাপ (ছবি সহ)
গেমগোতে মেককোড আর্কেডের সাথে অসীম স্তরের প্ল্যাটফর্মার: গেমগো একটি মাইক্রোসফ্ট মেককোড সামঞ্জস্যপূর্ণ রেট্রো গেমিং পোর্টেবল কনসোল যা টিঙ্কারজেন স্টেম শিক্ষা দ্বারা বিকাশিত। এটি STM32F401RET6 ARM Cortex M4 চিপের উপর ভিত্তি করে তৈরি করা হয়েছে এবং STEM শিক্ষাবিদদের জন্য তৈরি করা হয়েছে অথবা যারা রেট্রো ভিডিও গেম তৈরি করতে মজা করতে পছন্দ করে
Arduino এর সাথে সঙ্গীত চালান!: 5 টি ধাপ (ছবি সহ)
Arduino এর সাথে মিউজিক প্লে করুন
পিসি ভিডিও প্লেয়ারের জন্য বাচ্চা ভিডিও রিমোট: 6 টি ধাপ
পিসি ভিডিও প্লেয়ারের জন্য টডলার ভিডিও রিমোট: আমি একটি রিমোট কন্ট্রোল তৈরি করি যা ইউএসবি দিয়ে একটি পিসির সাথে সংযোগ স্থাপন করে। বড় রিমোট কন্ট্রোল আমার বাচ্চাকে একটি পুরানো কম্পিউটারে ভিডিও নির্বাচন এবং চালাতে দেয় এটি একটি অপেক্ষাকৃত সহজ প্রকল্প। মূল উপাদানটি হল একটি ইউএসবি কীপ্যাড বা একটি ওয়্যারলেস ইউএসবি কীপ্যাড। তারপর
কুইকটাইম প্লেয়ার ব্যবহার করে পিছনের দিকে ভিডিও চালান: 5 টি ধাপ
কুইকটাইম প্লেয়ার ব্যবহার করে পিছনের দিকে ভিডিও চালান: এটি শতাব্দীর অসাধারণ কৌশল। এই নির্দেশনাটি আপনাকে দূর্বল প্রোগ্রামগুলি ডাউনলোড না করে পিছনে পিছনে ভিডিও চালানোর সহজ উপায় দেখায় (যদি আপনার কুইকটাইম না থাকে তবে আপনার এটির প্রয়োজন হবে।) ছবিটির কিছুই নেই প্রকল্পের সাথে কর কিন্তু আমার দরকার ছিল