Hallo Zusammen, ich möchte ein Video welches auf einer SD-Karte liegt mit einem Mikrocontroller lesen und auf einem Oled 65k Farben (128x96) abspielen. Meine Fragen: - Video Format - Gibt es vorhandene Routinen in C - Welche µC Vielen Dank
Matthias Laubnitz schrieb: > - Gibt es vorhandene Routinen in C Für das entsprechende Display evtl. schon, für die SD-Karte mit Sicherheit. Matthias Laubnitz schrieb: > auf einem Oled 65k Farben (128x96) Weisst du schon welches Display es genau wird? Prinzipiell ist es einfacher ein Videosignal zu erzeugen und das auf einem 'fertigen' Display laufen zu lassen. Matthias Laubnitz schrieb: > - Welche µC Das kommt auf die Framerate an. Wenn du nur 5fps brauchst, dann tut es auch ein etwas größerer ATMEGA, ansonsten würde ich ARM und/oder FPGA empfehlen ...
Lehrmann Michael schrieb: > Für das entsprechende Display evtl. schon, für die SD-Karte mit > Sicherheit. Ich meinte eigentlich um zum Beispiel ein MPEG Video von der SD-Karte zu lesen. Lehrmann Michael schrieb: > Weisst du schon welches Display es genau wird? Prinzipiell ist es > einfacher ein Videosignal zu erzeugen und das auf einem 'fertigen' > Display laufen zu lassen. http://www.futaba.co.jp/en/dbps_data/_material_/radicon_eng/Display_and_Module/oled/pdf/110418standard_revk.pdf Das EL474. Lehrmann Michael schrieb: > Das kommt auf die Framerate an. Wenn du nur 5fps brauchst, dann tut es > auch ein etwas größerer ATMEGA, ansonsten würde ich ARM und/oder FPGA > empfehlen ... Es solletn schon so 20fps sein.
Hat jemand bereits Erfahrungen in diesem Bereich gemacht?
Ich schreibe in meinem Blog ausschliesslich über die OLED. Da ich über diese Technologie eine sehr hohe Meinung habe. Würde mich über einen Besuch und Kommentar freuen: www.oled-online.de MbG Ruben
Mich interessiert eher die Ansteuerung bzw. das Darstellen von Videos. Ich habe eine Oled mit 128x96 Pixel. Um ein Pixel zu schreiben benötige ich 16Bit. Da es sich bei der Datenübertragung um ein 8-Bit parallel Interface handelt muss ich 2x8Bit senden für 1 Pixel. 128x96x2 = 24576 Hz für ein Frame per second. Bei 20 fps muss ich die 8 Bit mit 491,520 kHz senden allerdings auch noch per SPI seriell die Daten von der SD-Karte lesen. Geht das mit nem Atmega32 ? Kann man das mit einem Codec vereinfachen? Ich habe keine Vorstellung.
Die Datenrate beträgt bei 20fps ungefähr 4MBit (128px*96px*16bit*20fps). Also 4Mhz SPI-Frequenz, der Atmega32 schafft bei 16MHz AFAIK maximal 8MHz. Das Lesen von der SD-Karte könnte dann knapp werden. Besser dran bist du mit einem µC mit DMA, dann geht das Datenschaufeln, ohne, dass der µC jedes Byte einzeln anfassen muss. http://rossum.posterous.com/avr-homebrew-device-with-iphone-aspirations schafft das. Auf einen komprimierenden Videocodec solltest du verzichten, da diese sehr CPU-Hungrig sind.
http://www.youtube.com/watch?v=YYBC6IjbG-M so in etwa? :D Hab ich vor einiger Zeit mal zusammengeschustert. Umgebauter miuchiz mit atmega644 und sd-card.
Grob zusammengefasst mit mplayer/mencoder auf die passende Auflösung/Framerate runtergerechnet. Jedes Bild als raw daten gespeichert und dann zu einer Datei zusammengefügt. Das gleiche gilt für den Sound.
@ slime was verwendest du für ein Display? Sieht cool aus :-)
Sind die raw Daten dann wie ein bmp aufgebaut. Also jedes Pixel mit Farbwerten?
ich schrieb: > @ slime > > was verwendest du für ein Display? Sieht cool aus :-) Ein paar links: Beitrag "Mini-Farbdisplay (+mehr) für 1 Euro" http://www.ethersex.de/index.php/Video
Stimmt, ich hatte das ganze "im" esex gemacht. :) Schau da mal in die sourcen. Ich bin mir aber nicht sicher ob das damals da mit aufgenommen wurde.
Ich hab nochmal nachgeschaut. Hab das mit mencoder in jpg´s gewandelt und dann mit diesem script bearbeitet. :) <code> <?php for($i = 1; $i < 488; $i++) { $file = sprintf("./%08d.jpg", $i); echo $file."\n"; /* $im = imagecreatefromjpeg($file); for($y=0; $y<67; $y++) { for($x=0; $x<98; $x++) { $rgb = imagecolorat($im, $x, $y); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; printf("%c%c", (($r & 0xF8) | (($g>>5) & 0x07)), ((($g<<3) & 0xE0) | (($b>>3) & 0x1F))); } } imagedestroy($im); */ } ?> </code>
mift, falsche klammern....
1 | <?php
|
2 | |
3 | for($i = 1; $i < 488; $i++) |
4 | {
|
5 | $file = sprintf("./%08d.jpg", $i); |
6 | echo $file."\n"; |
7 | /*
|
8 | $im = imagecreatefromjpeg($file);
|
9 | |
10 | for($y=0; $y<67; $y++)
|
11 | {
|
12 | for($x=0; $x<98; $x++)
|
13 | {
|
14 | $rgb = imagecolorat($im, $x, $y);
|
15 | $r = ($rgb >> 16) & 0xFF;
|
16 | $g = ($rgb >> 8) & 0xFF;
|
17 | $b = $rgb & 0xFF;
|
18 | printf("%c%c", (($r & 0xF8) | (($g>>5) & 0x07)), ((($g<<3) & 0xE0) | (($b>>3) & 0x1F)));
|
19 | }
|
20 | }
|
21 | imagedestroy($im);
|
22 | */
|
23 | }
|
24 | ?>
|
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.