2025 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2025-01-23 14:36
ESP32 দিয়ে ভিডিও চালান
এই নির্দেশাবলী 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 ডাউনলোড করুন এবং তাদের অফিসিয়াল সাইটে ইনস্টল করুন:
যেকোন এসডি কার্ড ঠিক থাকা উচিত, এবার আমি স্যানডিস্ক "স্বাভাবিক গতি" 8 জিবি মাইক্রো এসডি ব্যবহার করছি এসডি অ্যাডাপ্টারের সাথে।
শ্রুতি
আপনি যদি কেবল হেডফোন ব্যবহার করতে চান, কেবল হেডফোন পিনগুলি 26 পিনে সংযুক্ত করুন এবং GND অডিও শুনতে পারে। অথবা স্পিকারের সাথে অডিও চালানোর জন্য আপনি একটি ছোট এম্প্লিফায়ার ব্যবহার করতে পারেন।
অন্যান্য
কিছু breadboards এবং breadboard তারের
ধাপ 6: এসডি ইন্টারফেস
এসডি ইন্টারফেসএসডি ইন্টারফেস
ILI9225 LCD ব্রেকআউট বোর্ডে একটি SD CRD স্লট ব্রেকআউট পিন অন্তর্ভুক্ত ছিল। এটি SPI বাস বা 1-বিট SD বাস হিসাবে ব্যবহার করা যেতে পারে। আমার আগের নির্দেশাবলীতে উল্লিখিত হিসাবে, আমি 1-বিট এসডি বাস ব্যবহার করতে পছন্দ করি, তাই এই প্রকল্পটি 1-বিট এসডি বাসের উপর ভিত্তি করবে।
ধাপ 7: এটি একসাথে রাখুন
এটা একসাথে রাখুনএটা একসাথে রাখুনএটা একসাথে রাখুন
উপরের ছবিগুলি এই প্রকল্পে আমি যে পরীক্ষার প্ল্যাটফর্মটি ব্যবহার করছি তা দেখায়। সাদা ব্রেডবোর্ড থ্রিডি প্রিন্টেড, আপনি এটিকে থিভারিভার্সে ডাউনলোড করে প্রিন্ট করতে পারেন:
আপনার হাতে কোন হার্ডওয়্যার আছে তার উপর প্রকৃত সংযোগ নির্ভর করে।
Arduino IDE তে লাইব্রেরি আমদানি করুন। (Arduino IDE "স্কেচ" মেনু -> "লাইব্রেরি অন্তর্ভুক্ত করুন" -> ". ZIP লাইব্রেরি যোগ করুন" -> ডাউনলোড করা ZIP ফাইল নির্বাচন করুন)
Arduino IDE তে লাইব্রেরি আমদানি করুন। (Arduino IDE "স্কেচ" মেনু -> "লাইব্রেরি অন্তর্ভুক্ত করুন" -> ". ZIP লাইব্রেরি যোগ করুন" -> ডাউনলোড করা ZIP ফাইল নির্বাচন করুন)
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 এর সাথে ভিডিও এবং অডিও চালাতে পারেন, এটি অনেক সম্ভাবনা খুলে দিয়েছে!
গেমগোতে মেককোড আর্কেডের সাথে অসীম স্তরের প্ল্যাটফর্মার: গেমগো একটি মাইক্রোসফ্ট মেককোড সামঞ্জস্যপূর্ণ রেট্রো গেমিং পোর্টেবল কনসোল যা টিঙ্কারজেন স্টেম শিক্ষা দ্বারা বিকাশিত। এটি STM32F401RET6 ARM Cortex M4 চিপের উপর ভিত্তি করে তৈরি করা হয়েছে এবং STEM শিক্ষাবিদদের জন্য তৈরি করা হয়েছে অথবা যারা রেট্রো ভিডিও গেম তৈরি করতে মজা করতে পছন্দ করে
পিসি ভিডিও প্লেয়ারের জন্য টডলার ভিডিও রিমোট: আমি একটি রিমোট কন্ট্রোল তৈরি করি যা ইউএসবি দিয়ে একটি পিসির সাথে সংযোগ স্থাপন করে। বড় রিমোট কন্ট্রোল আমার বাচ্চাকে একটি পুরানো কম্পিউটারে ভিডিও নির্বাচন এবং চালাতে দেয় এটি একটি অপেক্ষাকৃত সহজ প্রকল্প। মূল উপাদানটি হল একটি ইউএসবি কীপ্যাড বা একটি ওয়্যারলেস ইউএসবি কীপ্যাড। তারপর
কুইকটাইম প্লেয়ার ব্যবহার করে পিছনের দিকে ভিডিও চালান: এটি শতাব্দীর অসাধারণ কৌশল। এই নির্দেশনাটি আপনাকে দূর্বল প্রোগ্রামগুলি ডাউনলোড না করে পিছনে পিছনে ভিডিও চালানোর সহজ উপায় দেখায় (যদি আপনার কুইকটাইম না থাকে তবে আপনার এটির প্রয়োজন হবে।) ছবিটির কিছুই নেই প্রকল্পের সাথে কর কিন্তু আমার দরকার ছিল