很久没写博客了,今天准备开始接着写。
一直以来对音视频这块都比较感兴趣,从我博客中可以看出,很久之前就开始学习WebRTC,并且转发了一些流媒体的文章,而目前的工作正好是做直播客户端的相关开发,加上由于年初疫情,隔离在家,时间比较充裕,于是又捡起了心中所好。
说起rtsp,自然会想到开源的跨平台流媒体框架live555。live555兼容的摄像机种类多,文档丰富,而且大名鼎鼎的VLC播放器中关于rtsp的推拉流使用的就是live555,因此决定撸起袖子从VLC源码看起.......
转眼间,一年就快过去了,基于live555的rtsp播放器也略有小成,支持Windows、Linux和Mac三个平台,先上几张图:
Windows
Mac
Ubuntu
开发环境:
Qt5.12.2+live555+ffmpeg4.3.1+SDL2.0.12+faac1.30+soundtouch2.2
主要功能:
1.跨平台
支持Windows、Linux和Mac。WIndows上支持32位和64位编译。
2.支持多路视频显示
多路视频独立拉流,操作互不影响。
Windows上显示支持SDL、QWidget和QOpenGLWidget渲染;Linux上支持SDL、QWidget和QOpenGLWidget渲染;Mac上支持QWidget和QOpenGLWidget渲染
3.支持多种音视频编码格式
视频支持H264和H265,音频支持AAC、G711a、G711u和G726
4.支持抓图
使用ffmpeg编码视频数据为jpg格式并保存
5.支持录制
使用ffmpeg同步录制音频和视频为mp4,支持包含b帧视频流的录制
6.支持音量调节
支持声音的打开/关闭和音量大小的调节
7.支持断网重连
8.支持多种类型的摄像机,支持拉取VLC推流
9.参数设置
支持摄像机列表的添加、视频和图片存储路径设置、流传输模式设置、网络抖动缓冲时间设置
大概就这些功能,后面会分章节写各部分的具体实现。
PS:自2022.04.17,本专栏提供所有源代码