一、前言
之前已经实现了rtsp/rtmp推流,rtsp/rtmp/hls/flv/ws-flv/webrtc等拉流,这种一般都需要依赖一个独立的流媒体服务程序,有没有一种更便捷的方式不需要这种依赖,然后又能实现推拉流呢,当然有的那就是udpp推流,其中udp推流还可以是组播或者单播推流,组播一般会选择224.0.0.1这个地址,单播的话就是指定到唯一的IP地址比如192.168.0.8,组播的话相当于同一个交换机内所有局域网设备都会收到该数据,优点是推一次所有地方都可以拉流取到数据,缺点是极有可能产生组播风暴,因为每个局域网的设备都可能收到大量的视频数据包,这些完全是多余的。
在之前的ffmpeg推流代码基础上,只需要增加一行代码即可实现udp推流,那就是在调用avformat_alloc_output_context2填入对应的格式需要填入mpegts,其实也可以是h264,但是个人推荐用mpegts,用ffmpeg命令行推流是 ffmpeg -re -stream_loop -1 -i f:/mp4/push/1.mp4 -c copy -f mpegts udp://127.0.0.1:1234 ,可以看到要指定对应的端口号,一个推流占用一个端口号,如果要推10个视频文件就要占用10个端口。
公众号:Qt实战,各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发。
公众号:Qt入门和进阶,专门介绍Qt/C++相关知识点学习,帮助Qt开发者更好的深入学习Qt。多位Qt元婴期大神,一步步带你从入门到进阶,走上财务自由之路。