前言
在学习雷神的博客的时候发现采用ffmpeg+SDL做的视频播放器,之前还未听说过SDL2这个框架,这里记录学习下,方便以后自己查看。
主要参考:https://blog.csdn.net/leixiaohua1020/article/details/40544521
SDL简介
SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。
实际上SDL本身并不提供视音频播放的功能,它只是封装了视音频播放的底层API。在Windows平台下,SDL封装了Direct3D这类的API用于播放视频;封装了DirectSound这类的API用于播放音频。因为SDL的编写目的就是简化视音频播放的开发难度,所以使用SDL播放视频(YUV/RGB)和音频(PCM)数据非常的容易。用下面这张图可以很明确地说明SDL的用途。
SDL实际上并不限于视音频的播放,它将功能分成下列数个子系统(subsystem):
Video(图像):图像控制以及线程(thread)和事件管理(event)。
Audio(声音):声音控制
Joystick(摇杆):游戏摇杆控制
CD-ROM(光盘驱动器):光盘媒体控制
Window Management(视窗管理):与视窗程序设计集成
Event(事件驱动):处理事件驱动
在Windows下,SDL与DirectX的对应关系如下。
SDL | DirectX |
---|---|
SDL_Video、SDL_Image | DirectDraw、Direct3D |
SDL_Audio、SDL_Mixer | DirectSound |
SDL_Joystick、SDL_Base | DirectInput |
SDL_Net | DirectPlay |