SRS之SrsHlsCache::reap_segment详解】的更多相关文章

1. 是否可切片的检测 首先在调用 SrsHlsCache::reap_segment 函数进行切片时,针对音频或视频,都会有一个函数来进行检测当前片的时长是否符合所要求的时长. 对于音频,会调用 SrsHlsMuxer::is_segment_absolutely_overflow 函数进行检测,如下: bool SrsHlsMuxer::is_segment_absolutely_overflow() { srs_assert(current); /* 若当前片的时长小于 200 ms,则直…
1. SrsHls::on_audio 将音频数据封装到 ts 文件中. /* * mux the audio packet to ts. * @param shared_audio, directly ptr, copy it if need to save it. */ int SrsHls::on_audio(SrsSharedPtrMessage* shared_audio) { int ret = ERROR_SUCCESS; /* 检测是够使能了 hls */ if (!hls_en…
1. SrsHls::on_video /* * mux the video packets to ts. * @param shared_video, directly ptr, copy it if need to save it. * @param is_sps_pps, whether the video is h.264 sps/pps. */ int SrsHls::on_video(SrsSharedPtrMessage* shared_video, bool is_sps_pps…
首先使用 obs 推流符合如下流程:参考自 Hanvision Makito X cann't publish to SRS.. FFMPEG: C/S: Handshake C: ConnectApp() tcUrl=xxx S: Ack Size 2500,000 S: Set Peer Bandwidth 2500,000 S: Set Chunk Size 60,000 C: Set Chunk Size 60,000 S: ConnectApp() _result S: onBWDon…
1. SrsRtmpConn::service_cycle 当服务器在 conn 线程的开始调用 connect_app 函数接收并解析客户端发送的 connect 消息后,调用该 service_cycle 函数开始服务客户端的具体请求. /** * when valid and connected to vhost/app, service the client. */ int SrsRtmpConn::service_cycle() { int ret = ERROR_SUCCESS; /…
1. SrsTsContext::encode_pes 该函数位于 srs_kernel_ts.cpp 中.下面的分析基于假设当前要封装的消息是视频. /* * @msg: 要写入到 ts 文件中的音视频消息 * @pid: 音视频消息对应的 PID 值,视频 AVC 的 PID 为 0x100, * 音频 AAC 的 PID 为 0x101 * @sid: 表示音视频的流类型,视频为 SrsTsStreamVideoH264(0x1b) * 音频为 SrsTsStreamAudioAAC(0x…
1. SrsRtmpConn::publishing int SrsRtmpConn::publishing(SrsSource* source) { int ret = ERROR_SUCCESS; /* 在配置文件中配置了 refer_publish 配置项才会进行 refer check */ if ((ret = refer->check(req->pageUrl, _srs_config->get_refer_pubish(req->vhost))) != ERROR_S…
1. connect('live') 2. SrsRtmpServer::connect_app 位于 srs_rtmp_stack.cpp.在 SRS 的 RTMP 连接处理线程 conn 中,当与客户端 handshake 完成后,即调用该函数接收客户端第一个 RTMP 消息:connect.如上图. int SrsRtmpServer::connect_app(SrsRequest* req) { int ret = ERROR_SUCCESS; SrsCommonMessage* msg…
今天现场查看了TCP端口的占用情况,如下图   红色部分是IP,现场那边问我是不是我的程序占用了tcp的链接,,我远程登陆现场查看了一下,这种类型的tcp链接占用了400多个,,后边查了一下资料,说ESTABLISHED状态 ESTABLISHED的意思是建立连接.表示两台机器正在通信.      之后查找  ncube-lm  发现ncube-lm是一个端口,是nCube License Manager (即ncube管理的一个许可证明),意思是被允许,被认证开放的意思,,, 之后查看端口号…
前文 讲述了JMeter分布式运行脚本,以更好的达到预设的性能测试(并发)场景.同时,在前文的第一章节中也提到了 JMeter 命令行(非GUI)模式,那么此文就继续前文,针对 JMeter 的命令行模式进行详细解说. 一.应用场景 1.无需交互界面或受环境限制(linux text model) 2.远程或分布式执行 3.持续集成,通过shell脚本或批处理命令均可执行,生成的测试结果可被报表生成模块直接使用,便于生成报告 二.命令行模式优点 1.节约系统资源:无需启动界面,节约系统资源 2.…