Πίνακας περιεχομένων:
- Βήμα 1: Χαρακτηριστικά και περιορισμοί ESP32
- Βήμα 2: Μορφή βίντεο
- Βήμα 3: Μορφή ήχου
- Βήμα 4: Μορφοποίηση μετατροπής
- Βήμα 5: Προετοιμασία υλικού
- Βήμα 6: Διασύνδεση SD
- Βήμα 7: Βάλτε το μαζί
- Βήμα 8: Πρόγραμμα
- Βήμα 9: Σημείο αναφοράς
- Βήμα 10: Καλό παιχνίδι
Βίντεο: Αναπαραγωγή βίντεο με ESP32: 10 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-31 10:18
Αυτό το Instructables δείχνει κάτι σχετικά με την αναπαραγωγή βίντεο και ήχου με το ESP32.
Βήμα 1: Χαρακτηριστικά και περιορισμοί ESP32
Χαρακτηριστικά
- 4 δίαυλοι SPI, 2 δίαυλοι SPI διαθέσιμοι για χώρο χρήστη, είναι SPI2 και SPI3 ή ονομάζονται HSPI και VSPI. Και οι δύο δίαυλοι SPI μπορούν να λειτουργούν το πολύ 80 MHz. Θεωρητικά μπορεί να σπρώξει 320x240 έγχρωμα pixel 16-bit σε οθόνη SPI LCD στα 60 fps, αλλά δεν έχει υπολογίσει ακόμα το χρόνο που απαιτείται για την ανάγνωση και αποκωδικοποίηση των δεδομένων βίντεο.
- Ο δίαυλος SD 1-bit / 4-bit μπορεί να συνδέσει την κάρτα SD στο εγγενές πρωτόκολλο
- I2S εσωτερική έξοδος ήχου DAC
- πάνω από 100 KB RAM διαθέσιμη για αποθήκευση βίντεο και ήχου
- Αρκετά καλή επεξεργαστική ισχύς για αποκωδικοποίηση JPEG (αναπαραγωγή Motion JPEG) και συμπίεση δεδομένων LZW (αναπαραγωγή κινούμενου GIF)
- Η έκδοση διπλού πυρήνα μπορεί να χωρίσει τα δεδομένα ανάγνωσης από την κάρτα SD, να αποκωδικοποιήσει και να ωθήσει στην οθόνη SPI LCD σε παράλληλες πολλαπλές εργασίες και να αυξήσει την απόδοση αναπαραγωγής
Περιορισμοί
- δεν διαθέτει αρκετή εσωτερική μνήμη RAM για να έχει διπλό buffer πλαίσιο για 320x240 σε χρώμα 16-bit, περιόρισε τον σχεδιασμό πολλαπλών εργασιών. Μπορεί να ξεπεράσει λίγο με το εξωτερικό PSRAM αν και είναι πιο αργό από την εσωτερική μνήμη RAM
- δεν έχει αρκετή ισχύ επεξεργασίας για αποκωδικοποίηση βίντεο mp4
- δεν έχουν όλες οι εκδόσεις ESP32 2 πυρήνες, το δείγμα πολλαπλών εργασιών ωφελείται μόνο σε έκδοση διπλού πυρήνα
Σχετ.:
Βήμα 2: Μορφή βίντεο
RGB565
Or ονομάζεται χρώμα 16-bit είναι μια ακατέργαστη μορφή δεδομένων που χρησιμοποιείται συνήθως στην επικοινωνία μεταξύ MCU και έγχρωμης οθόνης. Κάθε εικονοστοιχείο χρώματος αντιπροσωπεύεται από μια τιμή 16-bit, το πρώτο 5-bit είναι κόκκινη τιμή, μετά το 6-bit είναι πράσινη τιμή και στη συνέχεια μπλε τιμή 5-bit. Η τιμή 16-bit μπορεί να κάνει 65536 παραλλαγές χρώματος, επομένως ονομάζεται επίσης 64K χρώματα. Έτσι, 1 λεπτό βίντεο 320x240@30 fps θα έχει μέγεθος: 16 * 320 * 240 * 30 * 60 = 2211840000 bit = 276480000 byte ή πάνω από 260 MB
Κινούμενο GIF
Αυτή είναι μια κοινή μορφή αρχείου στον ιστό από τη δεκαετία του 1990. Περιορίζει την παραλλαγή χρώματος για κάθε οθόνη έως 256 χρώματα και δεν επαναλαμβάνει την αποθήκευση του pixel στο ίδιο χρώμα με το προηγούμενο πλαίσιο. Έτσι, μπορεί να μειώσει πολύ το μέγεθος του αρχείου, ειδικά όταν κάθε πλαίσιο κινούμενων σχεδίων δεν αλλάζει πάρα πολλές λεπτομέρειες. Η συμπίεση LZW έχει σχεδιαστεί με δυνατότητα αποκωδικοποίησης από υπολογιστές της δεκαετίας του 1990, οπότε το ESP32 έχει επίσης αρκετά καλή επεξεργαστική ισχύ για να το αποκωδικοποιήσει σε πραγματικό χρόνο.
Κίνηση JPEG
Or ονομάζεται M-JPEG / MJPEG είναι μια κοινή μορφή συμπίεσης βίντεο για το υλικό λήψης βίντεο με περιορισμένη ισχύ επεξεργασίας. Στην πραγματικότητα είναι απλώς μια συνένωση σταθερών JPEG καρέ. Συγκρίνετε με MPEG ή MP4, το Motion JPEG δεν χρειάζεται υπολογιστικά εντατική τεχνική πρόβλεψης interframe, κάθε καρέ είναι ανεξάρτητο. Απαιτεί λοιπόν λιγότερους πόρους για κωδικοποίηση και αποκωδικοποίηση.
Αναφορά.:
en.wikipedia.org/wiki/List_of_monochrome_a…
en.wikipedia.org/wiki/GIF
en.wikipedia.org/wiki/Motion_JPEG
Βήμα 3: Μορφή ήχου
PCM
Ακατέργαστη μορφή δεδομένων για ψηφιακό ήχο. Το ESP32 DAC χρησιμοποιεί βάθος 16-bit, που σημαίνει ότι κάθε δεδομένα 16-bit αντιπροσωπεύει ένα ψηφιακό δείγμα αναλογικού σήματος. Οι περισσότεροι ήχοι βίντεο και τραγουδιών χρησιμοποιούν συνήθως δείγμα ρυθμού στα 44100 MHz, που σημαίνει 44100 δειγματοληπτικό αναλογικό σήμα για κάθε δευτερόλεπτο. Έτσι, θα έχουν μέγεθος 1 λεπτού μονοφωνικού ήχου ακατέργαστων δεδομένων PCM: 16 * 44100 * 60 = 42336000 bit = 5292000 byte ή άνω των 5 MB. Το μέγεθος του στερεοφωνικού ήχου θα είναι διπλό, δηλαδή πάνω από 10 MB
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, scale = -1: 176: flags = lanczos, crop = 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, scale = -1: 176: flags = lanczos, crop = 220: in_h: (in_w -220)/2: 0, split [s0] [s1]; [s0] palettegen [p]; [s1] [p] paletteuse "-loop -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
Σημείωση:
Το κινούμενο-g.webp" />
Βήμα 5: Προετοιμασία υλικού
ESP32 Πίνακας Dev
Οποιαδήποτε κάρτα διπλού πυρήνα ESP32 dev πρέπει να είναι εντάξει, αυτή τη φορά χρησιμοποιώ ένα TTGO ESP32-Micro.
Έγχρωμη οθόνη
Οποιαδήποτε έγχρωμη οθόνη που υποστηρίζει το Arduino_GFX θα πρέπει να είναι εντάξει, αυτή τη φορά χρησιμοποιώ ένα ILI9225 breakout board με υποδοχή κάρτας SD.
Μπορείτε να βρείτε τη λίστα εμφάνισης χρώματος που υποστηρίζει Arduino_GFX στο Github:
github.com/moononournation/Arduino_GFX
Κάρτα SD
Οποιαδήποτε κάρτα SD πρέπει να είναι εντάξει, αυτή τη φορά χρησιμοποιώ ένα SanDisk "κανονικής ταχύτητας" micro SD 8 GB με προσαρμογέα SD.
Χος
Εάν θέλετε να χρησιμοποιήσετε μόνο ακουστικά, απλώς συνδέστε τις ακίδες ακουστικών στο pin 26 και το GND μπορεί να ακούσει τον ήχο. Or μπορείτε να χρησιμοποιήσετε έναν μικροσκοπικό ενισχυτή για αναπαραγωγή ήχου με ηχείο.
Οι υπολοιποι
Μερικές σανίδες ψωμιού και σύρματα ψωμιού
Βήμα 6: Διασύνδεση SD
Το ILI9225 LCD breakout board περιλάμβανε επίσης καρφίτσες διακλάδωσης υποδοχής SD crd. Μπορεί να χρησιμοποιηθεί ως δίαυλος SPI ή δίαυλος SD 1-bit. Όπως αναφέρθηκε στις προηγούμενες οδηγίες μου, προτιμώ να χρησιμοποιώ δίαυλο SD 1-bit, οπότε αυτό το έργο θα βασίζεται σε δίαυλο SD 1-bit.
Βήμα 7: Βάλτε το μαζί
Οι παραπάνω εικόνες δείχνουν την πλατφόρμα δοκιμών που χρησιμοποιώ σε αυτό το έργο. Η λευκή σανίδα είναι τυπωμένη 3D, μπορείτε να την κατεβάσετε και να την εκτυπώσετε στο 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
Σχετ.:
Βήμα 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 "Sketch" Menu -> "Include Library" -> "Add. ZIP Library" -> επιλέξτε το αρχείο ZIP που έχετε κατεβάσει)
ESP8266Audio
Λήψη των πιο πρόσφατων βιβλιοθηκών ESP8266Audio: (πατήστε "Κλωνοποίηση ή Λήψη" -> "Λήψη ZIP")
github.com/earlephilhower/ESP8266Audio
Εισαγάγετε βιβλιοθήκες στο Arduino IDE. (Arduino IDE "Sketch" Menu -> "Include Library" -> "Add. ZIP Library" -> επιλέξτε το αρχείο ZIP που έχετε κατεβάσει)
RGB565_video Δείγμα κώδικα
Λήψη του τελευταίου δείγματος κώδικα RGB565_video: (πατήστε "Κλωνοποίηση ή Λήψη" -> "Λήψη ταχυδρομικού ταχυδρομείου")
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
- Εάν διαπιστώσετε ότι ο προσανατολισμός δεν είναι σωστός, αλλάξτε την τιμή "περιστροφής" (0-3) στον νέο κωδικό κλάσης
- Εάν το πρόγραμμα εκτελείται καλά, μπορείτε να δοκιμάσετε ένα άλλο δείγμα εκκίνησης με SDMMC_*
- Εάν δεν έχετε υποδοχή κάρτας SD ή δεν έχετε εγκατεστημένο το FFmpeg, μπορείτε ακόμα να δοκιμάσετε παράδειγμα SPIFFS_*
Βήμα 9: Σημείο αναφοράς
Ακολουθεί η σύνοψη απόδοσης για διαφορετική μορφή βίντεο (220x176) και ήχου (44100 MHz):
Μορφή | Καρέ ανά δευτερόλεπτο (fps) |
MJPEG + PCM | 30 |
15 | |
RGB565 + PCM | 9 |
MJPEG + MP3 | 24 |
Σημείωση:
- Το MJPEG + PCM μπορεί να φτάσει σε υψηλότερα fps, αλλά είναι περιττό παιχνίδι σε μια μικρή οθόνη μεγαλύτερη από 30 fps
- Το RGB565 δεν απαιτεί διαδικασία αποκωδικοποίησης, αλλά το μέγεθος των δεδομένων είναι πολύ μεγάλο και καταναλώνεται πολύς χρόνος κατά τη φόρτωση δεδομένων από SD, 4-bit δίαυλο SD και ταχύτερη κάρτα SD μπορεί να το βελτιώσει λίγο (η άγρια εικασία μπορεί να φτάσει περίπου τα 12 fps)
- Η διαδικασία αποκωδικοποίησης MP3 δεν έχει βελτιστοποιηθεί ακόμη, είναι πλέον αφιερωμένη στον πυρήνα 0 για αποκωδικοποίηση MP3 και στον πυρήνα 1 για αναπαραγωγή βίντεο
Βήμα 10: Καλό παιχνίδι
Τώρα μπορείτε να παίξετε βίντεο και ήχο με το ESP32, ξεκλείδωσε πολλές δυνατότητες!
Νομίζω ότι θα κάνω μια μικρή vintage τηλεόραση αργότερα…
Συνιστάται:
Αναπαραγωγή ήχου χρησιμοποιώντας Arduino με κάρτα Micro SD: 7 βήματα (με εικόνες)
Πρόγραμμα αναπαραγωγής ήχου χρησιμοποιώντας Arduino με κάρτα Micro SD: ΕΓΓΡΑΦΕΙΤΕ το κανάλι μου για περισσότερα έργα ……………………. Πολλοί άνθρωποι θέλουν να διασυνδέσουν την κάρτα SD με arduino ή θέλετε κάποια έξοδο ήχου μέσω arduino. Έτσι, εδώ είναι ο ευκολότερος και φθηνότερος τρόπος διασύνδεσης της κάρτας SD με το arduino. μπορείς εσύ
MP3 Αναπαραγωγή ήχου FX Wall: 12 βήματα (με εικόνες)
MP3 Αναπαραγωγή ήχου FX Wall: Δημιουργήστε έναν διασκεδαστικό και διαδραστικό τοίχο ήχου που αναπαράγει Mp3 με ένα απλό άγγιγμα! Τι κάνεις με έναν άδειο τοίχο; Θα μπορούσατε να προσθέσετε μερικές ωραίες εικόνες σε αυτό; Or καλύψτε το με ένα πολύχρωμο φυτό σπιτιού. Έχουμε δει ακόμη και μερικούς ανθρώπους να κρύβουν γυμνούς τοίχους πίσω από το βιβλίο
Talking Arduino - Αναπαραγωγή MP3 με Arduino χωρίς καμία μονάδα - Αναπαραγωγή αρχείου Mp3 από το Arduino χρησιμοποιώντας PCM: 6 βήματα
Talking Arduino | Αναπαραγωγή MP3 με Arduino χωρίς καμία μονάδα | Αναπαραγωγή αρχείου Mp3 από το Arduino χρησιμοποιώντας PCM: Σε αυτά τα εκπαιδευτικά προγράμματα θα μάθουμε πώς να παίζουμε ένα αρχείο mp3 με arduino χωρίς να χρησιμοποιούμε καμία μονάδα ήχου, εδώ θα χρησιμοποιήσουμε τη βιβλιοθήκη PCM για το Arduino που παίζει 16 bit PCM συχνότητας 8kHZ, οπότε ας το κάνουμε αυτό
Πώς να σταματήσετε το Facebook από την αυτόματη αναπαραγωγή βίντεο στο Android !!: 10 βήματα
Πώς να σταματήσετε το Facebook από την αυτόματη αναπαραγωγή βίντεο στο Android !!: Αυτό το διδακτικό θα σας δείξει πώς να σταματήσετε το facebook από την αυτόματη αναπαραγωγή βίντεο τόσο σε δεδομένα όσο και σε wifi σε συσκευή android. Εγγραφείτε στο κανάλι μου Ευχαριστώ
Αναπαραγωγή βίντεο προς τα πίσω χρησιμοποιώντας το Quicktime Player: 5 βήματα
Αναπαραγωγή βίντεο προς τα πίσω χρησιμοποιώντας το Quicktime Player: Αυτό είναι το πιο φοβερό κόλπο του αιώνα. Αυτό το Instructable σάς δείχνει τον εύκολο τρόπο αναπαραγωγής βίντεο προς τα πίσω χωρίς λήψη ακατάλληλων προγραμμάτων (αν δεν έχετε γρήγορο χρόνο θα το χρειαστείτε.) Η εικόνα δεν έχει τίποτα κάνω με το έργο, αλλά χρειαζόμουν