我用Arduino制作了一个24x15 LED显示屏,去年我在内存中放入了32KB的图形例程,这很酷。
但现在我升级到了具有256KB内存的Arduino Mega,并有了一个带有微型SD卡读取器的"音乐屏蔽"。
所以我的新计划是用SD卡播放动画。
我已经编写了一个例程,将缓冲区加载到我的24x15显示器上。
因此,我想使用简单的3字节RGB像素将屏幕捕捉的(或任何)视频动画存储在磁盘上。该算法将采用任何分辨率的插值,选取每个(高度/15和宽度/24)块的平均颜色。因此,24x15动画将是该场景的特殊边缘情况。640x480缩小后看起来显然很可笑,但我可能会让看起来像马里奥的角色看起来很好看。
有什么办法吗?以前有人写过这个吗?我相信有人有。但是真的很难找到。
QuickASCII
"是一个由Quicktime提供支持的基于控制台的电影播放器和图片查看器",它说明了如何在支持的平台上利用Quicktime实现这一点。
未压缩AVI是一种在Arduino上易于读取的格式,像素为RGB。因此,您可以使用AVIsynth或任何可以编写AVI的视频工具,将源视频从工具可以读取的任何格式和大小转码为24x15未压缩的AVI,然后将其传输到SD卡,以便Arduino在RGB LED上读取和播放。你不必写一个AVI阅读器,它可以读取任何类型的AVI,只需要一个可以读取视频工具所写的特定风格的AVI阅读器(例如,硬编码起始偏移和字节计数等)
或者,让视频工具编写一个编号的.BMP文件的"图像序列",这些文件也很容易阅读(同样,尤其是如果你只需要阅读一种风格的文件)。我以前在嵌入式设备上做过类似视频的播放。
注意:请确保您的视频工具使用了良好的缩放算法,以便24x15像素代表源像素的累积区域,而不是简单的点采样,这将导致严重的混叠伪影。您也可以尝试在大规模缩小原始视频之前对其应用一些高斯模糊,以防止混叠。
参考文献:
AVI文件格式:http://msdn.microsoft.com/en-us/library/windows/desktop/dd318189(v=vs.85).aspxhttp://yaai.sourceforge.net/yaai/fileformat.html
BMP文件格式:http://en.wikipedia.org/wiki/BMP_file_format
AVI合成:http://avisynth.nl/index.php/Main_Page
索尼电影工作室白金版试用版(用于编码未压缩的AVI文件):http://www.sonycreativesoftware.com/download/trials/moviestudiope