在流媒体的开发中需要找个方法将264解码后的yuv图像显示在屏幕上,想看下除了Directx有没有别的方法,查到了SDL。
我对跨平台的库比较有兴趣,不过第一种应该更主流,这个作为兴趣研究下,以后可能也会有用跨平台开发的需求。
总体很简单,基本是对VisualC.html的翻译。做个记录。
一 下载:
源码包: http://www.libsdl.org/download-1.2.php
HG下载:http://www.libsdl.org/hg.php
这个项目应该算比较有影响力的,文档有中文的,例子也很多,看来我孤陋寡闻啊。
二 编译
比较简单,比我用过的大部分都简单。。。
直接接压缩SDL-1.2.14.zip,再进入SDL-1.2.14文件夹解压缩VisualC.zip,再进入VisualC目录点SDL.dsw就行,VisualC.html这里说的反倒把我绕糊涂了。。。
在workspace里面将两个SDL和SDLmain上点右键都build就行了。生成
- SDL.dll
- SDL.lib
- SDLmain.lib
三 用SDL创建一个工程
创建一个win32 Application。
在项目里创建一个C++文件。
设置c runtime, 在菜单Project|Settings|C/C++ tab|Code Generation|Runtime Library
设置
C runtime to "Multi-threaded DLL"。
添加SDL include目录到include列表中,在菜单Project|Settings|C/C++ tab|Preprocessor|Additional include directories
中填上
SDL include
的路径。
相比以上建议这种方法:可以在Tools|Options|Projects|VC++ Directories中的"Show Directories For:"下拉菜单选择"Include Files",点击"New Directory Icon"将include目录路径(例如:c:/SDL-1.2.5/include)填入,再在下拉菜单中选择"Library Files"将lib目录路径填上。
将下列文件拷到项目目录:(右键点击项目名,选择Add files to project)
SDL.dll
将下列文件添加到项目(不一定需要拷贝到项目目录)
SDL.lib
SDLmain.lib
将下列代码拷到前面创建的.cpp文件中:
#include "SDL.h"
int main( int argc, char* argv[] ) //注意:在vc中,这种main的写法是固定的,其他mian的格式可能有问题
{
// Body of the program goes here.
return 0;
}
编译通过则大功告成。
其实如果只是想用它的库做开发,直接下Development Libraries里面的就行了。下源码也有好处,比如解决后面就会遇到的stdout,stderr重定向问题。