一、前言
上次实现的文件推流,尽管优点很多,但是只能对现在存在的生成好的音视频文件推流,而现在更多的场景是需要将实时的视频流重新推流分发,用户在很多设备比如手机/平板/网页/电脑/服务器上观看,这样就可以很方便的将分散的视频流统一集中的流媒体服务器上,然后统一对外分发视频,而不是全部从设备端取流,大大减轻了设备端的压力,流媒体服务器就专门干这个事情负责分发,功能单一不容易出错,支持的并发数量很高。除了能够对网络摄像头的实时视频流转发,还可以将电脑桌面/本地摄像头实时视频推流出去,类似的技术主要应用在各类教育直播、在线会议、视频监控领域。
推拉流一般涉及到三个程序要素:推流程序比如ffmpeg,拉流程序比如ffplay或各种播放器,流媒体服务程序比如mediamtx(原rtsp-simple-server)、srs、EasyDarwin、LiveQing、ZLMediaKit,刚开始做推流开发都会有个疑问,以为只要有推流拉流就可以玩起来,其实都需要有个专门的流媒体服务程序做接收流并分发,其实ffmpeg全家桶以前还自带个ffserver就是流媒体服务程序,后面可能因为不是主业逐渐去掉了这个。个人推荐用mediamtx,go写的,单文件,支持windows、linux、mac三大操作系统,亲测全部好用。如果需要有管理的后台那就推荐Liv