基于rtp协议的视频实时通信动态链接库,使用C++编写。
- FEC前向纠错和防抖动(采用喷泉码)
- qsv(h264,HEVC不包含解码)
- nvenc(h264,HEVC)
- 视频编解码(h264,HEVC)
- 音频编解码(AAC)
- 摄像头采集(dshow,v4l2)
- 桌面采集(gdigrab,dxgi,fbdev)
- 麦克风和声卡采集(WASAPI,alsa)
- 视频播放(SDL2)
- 音频播放(SDL2)
- 音频重采样
- 用户管理
- 重构(使项目流程更加清晰,统一队列的输入输出)
- 保存录像(将编码后的数据保存到文件)
- qsv解码和nvdec
- 完善音频编解码
- 音视频同步
- 音频合成,图像合成
- 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。如果安装失败则需要考虑是不是显卡驱动问题
- 如果要使用硬件加速,则需要安装一系列的SDK。目前只使用了qsv,这里简单说一下Media SDK的安装
-
Linux
- Media SDK的安装
这个我没有安装成功,先不写 - 如果提示not found -lasound的话则是缺少alsa,需要去ALSA项目主页下载alsa-lib并安装.
- Media SDK的安装
配合一个GUI应用和一个服务器应用,可以简单跑一下流程
GUI应用:https://github.com/ZhongHuaRong/RTPDemo
Server:https://github.com/ZhongHuaRong/RTPServer
搭建好之后,就可以参考GUI的README的步骤来跑一下流程