美文网首页
开发实现C++ RTMP直播拉流播放器

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

作者: 笑嗯嗯 | 来源:发表于2017-06-24 14:48 被阅读174次

    背景

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

    设计点

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

    相关文章

      网友评论

          本文标题:开发实现C++ RTMP直播拉流播放器

          本文链接:https://www.haomeiwen.com/subject/sjdkcxtx.html