很久没写博客了,今天准备开始接着写。
一直以来对音视频这块都比较感兴趣,从我博客中可以看出,很久之前就开始学习WebRTC,并且转发了一些流媒体的文章,但因为工作中主要是做Qt客户端开发的,音视频学习只能断断续续进行。今年由于年初疫情,隔离在家,时间比较充裕,于是又捡起了心中所好。
说起rtsp,自然会想到开源的跨平台流媒体框架live555。live555兼容的摄像机种类多,文档丰富,而且大名鼎鼎的VLC播放器中关于rtsp的推拉流使用的就是live555,因此决定撸起袖子从VLC源码看起.......
转眼间,一年就快过去了,基于live555的rtsp播放器也略有小成,支持Windows、Linux和Mac三个平台,先上几张图:
开发环境:
Qt5.12.2+live555+ffmpeg4.3.1+SDL2.0.12+faac1.30+soundtouch2.2
主要功能:
1.支持多路视频显示
Windows和Linux支持Qt widget、SDL和Qt OpenGL三种方式渲染,Mac上支持Qt widget和Qt OpenGL两种方式渲染。SDL在Mac中嵌入Qt会有问题。
2.支持多种音视频编码格式
视频支持H264和H265,音频支持AAC、G711a、G711u和G726
3.支持抓图
使用ffmpeg编码视频数据为jpg格式并保存
4.支持录制
使用ffmpeg同步录制音频和视频为mp4,支持包含b帧视频流的录制
5.支持音量调节
支持声音的打开/关闭和音量大小的调节
6.参数设置
支持摄像机列表的添加、视频和图片存储路径设置、流传输模式设置和网络抖动缓冲时间设置
大概就这些功能,后面会分章节写各部分的具体实现,播放器还有很多待完善的地方,比如cpu占用率较高、soundtouch加速实时流时会有杂音,因此写博客的过程是一个边写边完善的过程。
原创不易,转载请标明出处:https://blog.csdn.net/caoshangpa/article/details/111500438
来源:oschina
链接:https://my.oschina.net/u/4286012/blog/4832880