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

背景

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

设计点

  • 要实现跨平台, 目前支持的平台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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值