用比较粗笨的办法来试验, 主要是为了体验一下通过widora_neo来看视频的感觉和效果,试验步骤如下:
0. 将480*320 LCD屏通过FT232H的8位并口与widora_NEO 的usb连接,
-
安装完整版本的ffmpeg, 直接用opkg install ffmpeg即可.
-
将要看的视频文件转换成Xvid编码形式的avi文件,尺寸大小为480x320,正好是tft LCD 的最大显示尺寸。将avi文件复制到一个u盘中, 插入与widora_NEO连接的usb-hub中,并mount到/movie目录。
-
将runbmp 放入后台运行, 这个程序其实就是不停地将/tmp目录下的bmp文件送到LCD显示,并将显示完成后的bmp文件删除,若没有bmp文件它就循环等待。源码见: https://github.com/widora/ctest/blob/master/runbmp.c
-
在/tmp下建立一个fifo.wav管道文件用来传输wav音频,然后启动 aplay -M /tmp/fifo.wav & 等待音频流。
-
最后启动ffmpeg程序,如果声音太卡的话将帧率调小点。当然你也可以在转换视频的时候选者高比特率。
ffmpeg -i /movie/speed.avi -y -f wav /tmp/fifo.wav -r 12 -f image2 /tmp/%4d.bmp
ffmpeg不断解码出bmp文件和wav流,供给runbmp和aplay来播放。 -
也可以在编译ffmpeg的时候将alsa加入到输出设备中,这样就不需要通过fifo管道来传递音频了,ffmpeg运行的时候可以通过选项 -f alsa default 直接将音频输出到alsa播放。
格式转换时调高了一下编码比特率, ,最后 fps=12,video stream 760kb/s audio stream 192kb/s 这样播放起来声音和图象都相对比较流畅, 片长19分20秒的视频,文件大小为123M, 总体效果感觉不错:
http://v.youku.com/v_show/id_XMzI0ODI0ODYxNg==.html?spm=a2hzp.8244740.0.0
需要改进处:
- 由于图象和声音没有同步机制,声音相对有一点超前。
- 声音有点卡(可以在转换视频时选高比特率来解决)。
- 目前软件的效率比较低,如果能在ffmpeg的基础上开发, 整合音频播放和视频的输出,效果肯定会更好。