开发实现C++ RTMP直播拉流播放器

来源:互联网 发布:淘宝返现卡片 编辑:程序博客网 时间:2024/05/16 13:04

背景

该直播播放器的背景是来源于 《拉流推流服务器设计》的一个分支,它的重点是把拉下来的流进行解码显示播放。

设计点

  • 要实现跨平台, 目前支持的平台linux和windows
  • 要模块化和结构化
  • 可以拉各个平台的直播流
  • 要音视频同步

基于上面的设计点大体的一个结构图

结构图.png

  • 这里的音频播放是一个抽象类,windows版本实现是libao,linux版本实现是alsa
  • 视频显示用的SDL
class AudioOutAbstract{public:    AudioOutAbstract() {}    virtual ~AudioOutAbstract()    {        deinit();    }    // name of output plugin    //virtual const char *name() const = 0;    // set setting    virtual int setSetting(const int samplerate, const int channels, const int nsamples)    {        return 0;    }    // called before playing    virtual void start() {}    // called after playing    virtual void stop() {}    // play samples    virtual void play(char *data, int bytes) = 0;    // called at startup    virtual bool init(const std::string &settings)    {         return true;    }    // called at shutdown    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