• 基于live555的视频直播 DM368IPNC RTSP分析


    因需要,从个人的理解顺序和需求角度对live555的分析与开发整理,包含RTSP Server与RTSP Client、如何直播H.264流与JPEG流等,均进行了探讨,对live555的初学者有一定的指导意义。

    本人习惯使用excel归档,所以本文均为excel的截图,源文件可以再资源中下载。








     

     

    基于live555的视频直播 DM368IPNC RTSP分析

     

    appro IPNC视频流直播部分用的RTSP,基于live555,通过改写wis-streamer实现的,在live555官网上有wis-streamer的代码下载,appro将其修改,在framedsource中加入了GetAVData接口,这样ipnc就可以直播了。

    感慨:C++ 真的太好用了

    现在懒了,文字部分就直接复制出来,源文档使用的是excel,

    文档下载地址:http://www.kuaipan.cn/file/id_48923272389066806.html


    基于live555的视频直播 DM368IPNC RTSP分析

    一、描述


    appro利用live555实现了三种视频流以及一种音频流的直播
    1、MJPEG Video
    2、H264 Video
    3、MPEG4 Video
    4、PCM Audio

    live555是一个开源的RTSP C++类库,默认实现音视频文件的点播,但是可以通过继承相关类,重写相关方法实现视频直播

    live555提供的实现直播的通用步骤是:

    截图来自之前的《live555分析与开发.xlsx》

    appro也是按照此种方法实现

    二、Appro的添加的live555源文件

    之所以文件复杂,是由于实现了多种音视频流,如果只留其一,源文件将非常简洁

    下图是appro源码的UML类图

    APPROInput类 类似于设计模式中的简单工厂模式,用于创建具体的FramedSource,对于WISServerMediaSubsession类来说,处理FramedSource的接口是相同的,
    但是对于FramedSource来说,VideoSource与AudioSource的具体的帧获取是不同的,
    这样,就需要利用APPROInput来分别创建VideoSource和AudioSource。


    类APPROInput的videoSource()方法 返回VideoOpenFileSource类的实例
    类APPROInput的audioSource()方法 返回AudioOpenFileSource类的实例

    三、重要的FramedSource

    FramedSource类的doGetNextFrame()方法用于获得音视频的帧数据,子类需要实现这个方法

    OpenFileSource中的incomingDataHandler1,调用了虚函数readFromFile,这个函数与底层相关,
    所有由OpenFileSource的子类 VideoOpenFIleSource和AudioOpenFileSource类实现

    在appro的ipnc中,不管是视频还是音频数据,均是通过GetAVData()函数来获得,
    所以VideoOpenFileSource类和AudioOpenFIleSource类的readFromFile方法中封装了GetAVData()这个函数。

    具体获得哪种类型的数据是由类OpenFileSource中的属性APPROInput &fInput来传递的

    在main函数中有关FramedSource操作的所有代码如下图,以H264为例
    启示:在移植appro的live555到高清相机中,我认为最好的方法就是按照IPNC的GetAVData()函数结构,
    封装高清相机的GetAVData()函数,高层的live555RTSP部分可不做任何改动

    四、RTSP直播 main主程序

    这与普通的live555 rtsp service结构并无太多区别,只是由于要传输的视频类型较多,所以多了很多if else,这部分比较简单,不作分析。

    appro也是按照此种方法实现

     

     

     

  • 相关阅读:
    团队作业3--需求改进&系统设计
    团队作业2-《帮帮-需求规格说明书》
    团队作业1——团队展示&选题
    动态规划计算文本相似度项目—第一次个人编程作业(软件工程)
    Self Introduction&5 Questions
    团队作业6——复审与事后分析
    事后诸葛亮
    Alpha阶段项目复审
    团队作业1—团队展示&选题
    自我介绍+软工五问
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3249113.html
Copyright © 2020-2023  润新知