Giter Site home page Giter Site logo

rtplivelib's Introduction

rtplivelib

基于rtp协议的视频实时通信动态链接库,使用C++编写。

目前实现的功能

  • FEC前向纠错和防抖动(采用喷泉码)
  • qsv(h264,HEVC不包含解码)
  • nvenc(h264,HEVC)
  • 视频编解码(h264,HEVC)
  • 音频编解码(AAC)
  • 摄像头采集(dshow,v4l2)
  • 桌面采集(gdigrab,dxgi,fbdev)
  • 麦克风和声卡采集(WASAPI,alsa)
  • 视频播放(SDL2)
  • 音频播放(SDL2)
  • 音频重采样
  • 用户管理

下一步工作

  • 重构(使项目流程更加清晰,统一队列的输入输出)
  • 保存录像(将编码后的数据保存到文件)
  • qsv解码和nvdec
  • 完善音频编解码
  • 音视频同步
  • 音频合成,图像合成

已知的部分bug

  • Windows下摄像头重名的问题(dshow问题,他不会处理重名,导致重名无法开启第二个设备)
  • 在deepin系统采集桌面时,将会采集tty2,而不是当前桌面
  • 用户识别出问题(主要是SSRC的更改出现的逻辑问题)
  • 使用qsv有的系统会出现崩溃
  • 解码的时候容易出现无效指针的问题
  • 帧从内存转到显存出错时会出现内存泄漏
  • audio encoder有异常

上手指南

以下指南将帮助你在本地机器上安装和运行该项目,进行开发

安装要求

1.GCC
2.qmake or cmake
3.各种依赖库(ffmpeg,SDL2,jrtplib,x264,x265,libfdk-aac,libmfx,openfec,wirehair),下载的时候已经自带,如果需要自己编译则可以看依赖库构建的步骤。 好像Linux的.so库的链接不能拷贝过来,所以到时候需要自己创建链接

安装步骤

  • 使用qmake
    1.安装IDE(QtCreator),推荐把整个Qt SDK下载下来,链接:https://download.qt.io/official_releases/qt/
    编译的时候,Windows系统推荐Mingw 64bit,Linux系统使用GCC 64bit,不要使用32bit
    2.打开QtCreator,打开rtplivelib项目,构建即可生成lib库
  • 使用cmake
    1.先进入build目录,根据系统选择相应的脚本
    2.在toolChain.cmake文件修改c/c++编译器的路径
    3.运行脚本,再调用make && make install即可完成编译和安装,目前仅支持Windows系统
    cd build/msys_mingw64/
    ./make-mingw64-Makefiles-Release.sh
    make -j8 && make install

依赖库的构建

优先使用自带的lib库,已经经过测试没有问题!如果出现问题,可以参考这里自己手动编译lib库。

其他要求

  • Windows

    • 如果要使用硬件加速,则需要安装一系列的SDK。目前只使用了qsv,这里简单说一下Media SDK的安装
      1.更新到最新的显卡驱动
      2.去Intel官网下载Intel Media SDK,需要intel账号才能下载
      3.安装Intel Media SDK。如果安装失败则需要考虑是不是显卡驱动问题
  • Linux

    • Media SDK的安装
      这个我没有安装成功,先不写
    • 如果提示not found -lasound的话则是缺少alsa,需要去ALSA项目主页下载alsa-lib并安装.

使用

配合一个GUI应用和一个服务器应用,可以简单跑一下流程
GUI应用:https://github.com/ZhongHuaRong/RTPDemo
Server:https://github.com/ZhongHuaRong/RTPServer
搭建好之后,就可以参考GUI的README的步骤来跑一下流程

rtplivelib's People

Contributors

zhonghuarong avatar

Stargazers

laojian avatar  avatar luqin avatar  avatar  avatar chaohuzhang avatar 德骨研究员 avatar revstar avatar 始作俑者 avatar

Watchers

Guo Lijun avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.