推拉流理论
推流:将直播的内容推送至服务器的过程。
拉流:指服务器已有直播内容,用指定地址进行拉取的过程。
拉流,即是指服务器里面有流媒体视频文件;
但zlmediakit里也有个广义的拉流概念如下。对于用户而言,确实是拉流的,但实现的过程,依然是通过了sip服务器进行触发设备“主动”推流,这块对用户是透明的,所以他感觉 是一个拉流过程 。因为对于摄像头而言,它没有事先存视频。 下面两个图,一个是支持被拉的,就拉流了,一个不支持的,就触发推流。
推拉流测试
ffmpeg 推流使用
ffmpeg -re -i "/opt/zlm/11.mp4" -vcodec h264 -acodec aac -f flv rtmp://127.0.0.1/live/test2
ffmpeg -re -i "/opt/zlm/11.mp4" -vcodec h264 -acodec aac -f flv rtmp://127.0.0.1/live/test2
服务器可以看到
2023-03-30 14:44:47.809 I MediaServer[13-event poller 23] MediaSource.cpp:461 emitEvent | 媒体注册:rtmp __defaultVhost__ live test2
2023-03-30 14:44:47.884 D MediaServer[13-event poller 23] MediaSink.cpp:136 emitAllTrackReady | all track ready use 2574ms
2023-03-30 14:44:47.884 I MediaServer[13-event poller 23] MediaSource.cpp:461 emitEvent | 媒体注册:fmp4 __defaultVhost__ live test2
2023-03-30 14:44:47.884 I MediaServer[13-event poller 23] MultiMediaSourceMuxer.cpp:329 onAllTrackReady | stream: rtmp://127.0.0.1:1935/live/test2 , codec info: mpeg4-generic[48000/1/16] H264[544/960/29]
2023-03-30 14:44:47.884 I MediaServer[13-event poller 23] MediaSource.cpp:461 emitEvent | 媒体注册:rtsp __defaultVhost__ live test2
2023-03-30 14:44:47.885 I MediaServer[13-event poller 23] MediaSource.cpp:461 emitEvent | 媒体注册:ts __defaultVhost__ live test2
2023-03-30 14:44:56.463 I MediaServer[13-event poller 23] MediaSource.cpp:461 emitEvent | 媒体注册:hls __defaultVhost__ live test2
我们可以在JessDemo里面放这个地址(参考资料里url组成)
ws://10.30.2.8:6080/live/test2.live.flv
也可以使用ffplay
D:\java\xiachu\bin>ffplay rtmp://10.30.2.8:10935/live/test2
按需拉流测试
ws://10.30.2.8:6080/rtp/44010200492000000002_34020000001310000002.live.flv
我们是通过wvp sip 调用摄像头拉起的,按上文方法,它这个播放器就可以拉起了rtsp等
ffplay?看是否可以直接拉流
D:\java\xiachu\bin>ffplay rtsp://10.30.2.8:10554/rtp/44010200492000000002_34020000001310000002
ffplay rtmp://10.30.2.8:10935/rtp/44010200492000000002_34020000001310000002
如图一所画,如果摄像头支持rtsp,rtmp拉流,就可以,实验说明不行;
所以我们可以通过sip 主动推起后,让这个地址,都可以播放
ffplay直接播放云录相,也可以,这也可以算成一种 拉流。
D:\java\xiachu\bin>ffplay http://10.30.2.8:6080/record/rtp/44010200492000000002_34020000001310000002/2023-03-30/09%3A32%3A45-09%3A32%3A54-9994.mp4
也可以播放
webrtc 使用
https://www.bilibili.com/video/BV1Eg411N7TJ/?vd_source=513f4714cefb8d7c46b9fdc5d529d655
android webrtc 正好可以看为什么连不上。
在线测试
https://github.com/ZLMediaKit/ZLMediaKit/wiki/%E5%9C%A8%E7%BA%BF%E6%B5%8B%E8%AF%95
对webrtc的配置(证书 ,开启)
生成SSL自签名证书并测试 · ZLMediaKit/ZLMediaKit Wiki (github.com)
10443->443 6080->80(不影响 )
(2)
cmake专题
https://blog.csdn.net/qq_43257914/article/details/128409831
doc-new\80-部门管理\16-网管开发组\80-培训内容\c++相关
cmake_tutorial_complete.pdf
(4) 知识
各种帧的介绍
https://blog.csdn.net/qq_21438461/article/details/125576733
(5)问题
android连webrtc时出现的
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
https://blog.csdn.net/kingyc123456789/article/details/108006601
参考资料
概念-
(98条消息) 【流媒体】推流与拉流简介_推流拉流什么意思_No8g攻城狮的博客-CSDN博客
ZLMediaKit实现按需拉流 · ZLMediaKit/ZLMediaKit Wiki (github.com)
使用ZLMediaKit实现按需推流 · ZLMediaKit/ZLMediaKit Wiki (github.com)
ffmpeg ffplay工具的下载相关
夏楚/FFmpeg (gitee.com)
FFmpeg实战:ffplay介绍及入门使用 (360doc.com)
Releases · BtbN/FFmpeg-Builds (github.com)
推流播放
ZLMediaKit推流测试 · ZLMediaKit/ZLMediaKit Wiki (github.com)
播放url规则 · ZLMediaKit/ZLMediaKit Wiki (github.com)