2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-23 15:13
ESP32 ile Video Oynat
Bu Instructables, ESP32 ile video ve ses oynatma hakkında bir şeyler gösterir.
Adım 1: ESP32 Özellikleri ve Sınırlamaları
Özellikleri
4 SPI bus, 2 SPI bus kullanıcı alanı için kullanılabilir, bunlar SPI2 ve SPI3'tür veya HSPI ve VSPI olarak adlandırılır. Her iki SPI veri yolu da en fazla 80 MHz'de çalışabilir. Teorik olarak 320x240 16 bit renkli pikselleri 60 fps'de SPI LCD'ye aktarabilir, ancak video verilerinin okunması ve kodunun çözülmesi için gereken süreyi henüz saymamıştır.
1 bit / 4 bit SD veri yolu, SD kartı yerel protokole bağlayabilir
I2S dahili DAC ses çıkışı
video ve ses arabelleği için 100 KB'den fazla RAM
JPEG (Hareketli JPEG oynat) ve LZW veri sıkıştırma (Animasyonlu-g.webp" />
Çift çekirdekli sürüm, SD karttan okuma verilerini bölebilir, kodu çözebilir ve SPI LCD'ye aktarabilir ve paralel çoklu görevlere aktarabilir ve oynatma performansını artırabilir
sınırlamalar
16 bit renkte 320x240 için çift çerçeve arabelleğine sahip olmak için yeterli dahili RAM olmaması, çoklu görev tasarımını sınırladı. Dahili RAM'den daha yavaş olmasına rağmen harici PSRAM ile biraz üstesinden gelebilir
mp4 videonun kodunu çözmek için yeterli işlem gücü yok
tüm ESP32 sürümlerinde 2 çekirdek bulunmaz, çoklu görev örneği yalnızca çift çekirdekli sürümde fayda sağlar
Referans:
2. Adım: Video Formatı
RGB565
Veya 16 bit renk olarak adlandırılan, MCU ve renkli ekran arasındaki iletişimde yaygın olarak kullanılan bir ham veri formatıdır. 16 bitlik bir değerle temsil edilen her renk pikseli, ilk 5 bitlik kırmızı değer, ardından 6 bitlik yeşil değer ve ardından 5 bitlik mavi değerdir. 16 bitlik değer 65536 renk değişimi yapabildiğinden 64K renk olarak da adlandırılır. Yani 1 dakikalık 320x240@30 fps video boyutlandırılacaktır: 16 * 320 * 240 * 30 * 60 = 2211840000 bit = 276480000 bayt veya 260 MB'ın üzerinde
Animasyonlu GIF
Bu, 1990'lardan beri web'de yaygın bir dosya biçimidir. Her ekran için renk varyasyonunu 256 renge kadar sınırlar ve önceki kareyle aynı renkte olan pikseli tekrarlamaz. Bu nedenle, özellikle her animasyon karesi çok fazla ayrıntı değiştirmediğinde, dosya boyutunu çok azaltabilir. LZW sıkıştırması 1990'ların bilgisayarı tarafından kodu çözülebilecek şekilde tasarlanmıştır, bu nedenle ESP32 ayrıca gerçek zamanlı olarak kodunu çözmek için yeterince adil işlem gücüne sahiptir.
Hareketli JPEG
Veya M-JPEG / MJPEG olarak adlandırılan, sınırlı işlem gücüne sahip video yakalama donanımı için yaygın bir video sıkıştırma formatıdır. Aslında sadece hareketsiz JPEG karelerinin bir birleşimidir. MPEG veya MP4, Motion JPEG ile karşılaştırın, hesaplama açısından yoğun interframe tahmin tekniğine gerek yok, her kare bağımsızdır. Bu nedenle, kodlamak ve kodunu çözmek için daha az kaynak gerektirir.
Referans:
en.wikipedia.org/wiki/List_of_monochrome_a…
en.wikipedia.org/wiki/GIF
en.wikipedia.org/wiki/Motion_JPEG
3. Adım: Ses Formatı
PCM
Dijital ses için ham veri formatı. ESP32 DAC, 16 bitlik bit derinliği kullanır; bu, her 16 bitlik verinin dijital örneklenmiş bir analog sinyali temsil ettiği anlamına gelir. Çoğu video ve şarkı sesi, yaygın olarak 44100 MHz'de örnekleme hızını kullanır; bu, her saniye için 44100 örneklenmiş analog sinyal anlamına gelir. Böylece, 1 dakikalık mono ses PCM ham verileri boyutlandırılacaktır: 16 * 44100 * 60 = 42336000 bit = 5292000 bayt veya 5 MB'ın üzerinde. Stereo sesin boyutu iki katı, yani 10 MB'ın üzerinde olacaktır.
MP3
MPEG Layer 3, 1990'lardan beri şarkı sıkıştırması için yaygın olarak kullanılan sıkıştırılmış bir ses formatıdır. Dosya boyutunu önemli ölçüde ham PCM formatının onda birinin altına indirebilir
Referans:
en.wikipedia.org/wiki/Pulse-code_modulatio…
en.wikipedia.org/wiki/MP3
4. Adım: Dönüştürmeyi Biçimlendirin
Bu proje, videoyu ESP32 okunabilir biçimine dönüştürmek için FFmpeg kullanır.
Henüz değilse, lütfen FFmpeg'i resmi sitelerinden indirip yükleyin:
FFmpeg dönüştürülmüş Animasyonlu GIF, bazı web araçları tarafından daha da optimize edilebilir, bir tane bulmak için-g.webp" />
Adım 5: Donanım Hazırlığı
Donanım Hazırlığı
ESP32 Geliştirme Kartı
Herhangi bir çift çekirdekli ESP32 geliştirme kartı iyi olmalı, bu sefer bir TTGO ESP32-Micro kullanıyorum.
Renkli ekran
Arduino_GFX'in desteklediği herhangi bir renkli ekran iyi olmalı, bu sefer SD kart yuvalı bir ILI9225 devre kartı kullanıyorum.
Arduino_GFX destekli renkli ekran listesini Github'da bulabilirsiniz:
github.com/moononournation/Arduino_GFX
Hafıza kartı
Herhangi bir SD kart iyi olmalı, bu sefer SD adaptörlü bir SanDisk "normal hızlı" 8 GB mikro SD kullanıyorum.
Ses
Yalnızca kulaklık kullanmak istiyorsanız, kulaklık pinlerini pin 26'ya bağlamanız yeterlidir; GND sesi dinleyebilir. Veya hoparlörle ses çalmak için küçük bir amplifikatör kullanabilirsiniz.
Diğerleri
Bazı breadboard'lar ve breadboard telleri
Adım 6: SD Arayüzü
SD ArayüzüSD Arayüzü
ILI9225 LCD devre kartı ayrıca bir SD crd yuvası koparma pimleri içeriyordu. SPI veri yolu veya 1-bit SD veri yolu olarak kullanılabilir. Önceki talimatlarımda belirtildiği gibi, 1 bit SD veri yolunu kullanmayı tercih ediyorum, bu nedenle bu proje 1 bit SD veri yolunu temel alacak.
7. Adım: Bir araya getirin
Bir araya koyBir araya koyBir araya koy
Yukarıdaki resimler bu projede kullandığım test platformunu göstermektedir. Beyaz devre tahtası 3D yazdırılmıştır, bunuthingiverse'den indirebilir ve yazdırabilirsiniz:
Gerçek bağlantı, elinizde hangi donanıma sahip olduğunuza bağlıdır.
ILI9225 kullanmıyorsanız, sınıf adını düzeltmek için yeni sınıf kodunu (35. satır civarında) değiştirin.
Arduino IDE "Yükle" düğmesine basın
Programı yükleyemediyseniz, ESP32 GPIO 2 ile SD D0/MISO arasındaki bağlantıyı kesmeyi deneyin.
Yönlendirmenin doğru olmadığını fark ederseniz, yeni sınıf kodunda "döndürme" değerini (0-3) değiştirin.
Program iyi çalışıyorsa, SDMMC_* ile başka bir örnek başlatmayı deneyebilirsiniz.
SD kart yuvanız yoksa veya FFmpeg kurulu değilse, yine de SPIFFS_* örneğini deneyebilirsiniz
9. Adım: Karşılaştırma
Kalite Testi
İşte farklı video (220x176) ve ses (44100 MHz) formatı için performans özeti:
Biçim
Saniyede kare (fps)
MJPEG + PCM
30
15
RGB565 + PCM
9
MJPEG + MP3
24
Not:
MJPEG + PCM daha yüksek fps'ye ulaşabilir ancak 30 fps'den büyük küçük bir ekranda gereksiz oynama
RGB565 kod çözme işlemi gerektirmez, ancak veri boyutu çok büyüktür ve SD, 4 bit SD veriyolu ve daha hızlı SD karttan veri yüklerken çok fazla zaman harcanır, onu biraz iyileştirebilir (yabani tahmin yaklaşık 12 fps'ye ulaşabilir)
MP3 kod çözme işlemi henüz optimize edilmedi, artık MP3 kod çözme için çekirdek 0 ve video oynatmak için çekirdek 1 ayrılmıştır
Adım 10: Mutlu Oynama
Mutlu Oynama!
Artık ESP32'nizle video ve ses oynatabilirsiniz, birçok olasılığın kilidini açtı!
Sanırım daha sonra minik bir vintage TV yapacağım…
ESP8266 WeMos D1 R1 Uno ile Wifi İşlemci Kullanarak ESP32-Cam ile Görüntü Yakalayın ve Gönderin: Uno ile ESP8266 WeMos D1 R1 WiFI İşlemci kullanarak ESP32-Cam (OV2640) kullanarak görüntü yakalayın ve e-postaya gönderin, Google Drive'a kaydedin ve gönderin Twilio'yu kullanan Whatsapp.Requirements: Uno'lu ESP8266 WeMos D1 R1 WiFI İşlemci (https://protosupplies
Gölge Işık Kutusu - Arduino ile IR Uzaktan Kumanda ile Kontrol: Bu talimat, bir sonraki Noel için gölge ışık kutusunun nasıl yapılacağına rehberlik edecektir. Kendi odanızı dekore edebilir veya arkadaşınıza hediye olarak yapabilirsiniz. Bu gölge kutusu, Kırmızı, Mavi, Yeşil renklerle karıştırarak çeşitli renkler yapabilir
ESP32 ile PWM | Arduino IDE ile ESP 32'de PWM ile LED Karartma: Bu talimatta Arduino IDE & PWM temel olarak herhangi bir MCU'dan analog çıkış üretmek için kullanılır ve bu analog çıkış 0V ile 3.3V (esp32 durumunda) arasında herhangi bir şey olabilir & itibaren
100 Abone Youtube Oynat Düğmesi !: Başlığın dediği gibi, Youtube kanalım 100 Aboneyi geçtiğinden, bazı kutlamaların zamanı geldi, Ben de kendi 100 Abonelik Oynat Düğmemi almaya karar verdim! O halde daha fazla gecikmeden Başlayalım
Bağımsız CD-ROM Sürücünüze Oynat/Atla Düğmesi Ekleyin: Eski bir CD-ROM sürücüsünden bir CD çalar yapmak istiyorsanız (buraya bakın) ancak sahip olduğunuz sürücüde ön tarafta OYNAT/SKIP düğmesi yoksa …..Boşvermeyin, çoğu Cd sürücüsüne bir tane ekleyebilirsiniz,>>>> Okumaya devam etmek