背景
该直播播放器的背景是来源于 《拉流推流服务器设计》的一个分支,它的重点是把拉下来的流进行解码显示播放。
设计点
- 要实现跨平台, 目前支持的平台linux和windows
- 要模块化和结构化
- 可以拉各个平台的直播流
- 要音视频同步
基于上面的设计点大体的一个结构图
- 这里的音频播放是一个抽象类,windows版本实现是libao,linux版本实现是alsa
- 视频显示用的SDL
class AudioOutAbstract
{
public:
AudioOutAbstract() {}
virtual ~AudioOutAbstract()
{
deinit();
}
virtual int setSetting(const int samplerate, const int channels, const int nsamples)
{
return 0;
}
virtual void start() {}
virtual void stop() {}
virtual void play(char *data, int bytes) = 0;
virtual bool init(const std::string &settings)
{
return true;
}
virtual void deinit() {}
};
视频显示
class SDLDisp {
public:
SDLDisp(int _screen_w,int _screen_h);
virtual ~SDLDisp();
int initSDL(char *winName);
int closeSDL();
void DisplayYUV420(AVFrame *pFrameYUV);
private:
int screen_w;
int screen_h;
bool isquit;
};
联系
点击链接加入群【rtmp直播交流学习合作】:https://jq.qq.com/?_wv=1027&k=4Aqm21F
qq群号:559425694
email:zhanchonglongba@126.com/690759587
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)