Janus之自问自答

1 RTP转发

event_loop不改配置,一个用户就新起了一个线程处理RTP转发。就是理清楚几个结构体之间的联系。有simulcast处理。

void janus_videoroom_incoming_rtp(janus_plugin_session *handle, janus_plugin_rtp *pkt) {
janus_videoroom_publisher *participant = janus_videoroom_session_get_publisher_nodebug(session);

janus_videoroom_publisher_stream *ps = g_hash_table_lookup(participant->streams_byid, GINT_TO_POINTER(pkt->mindex));

if(ps->active && !ps->muted) {
   //走RTP举例,rtp_forward是ps->rtp_forwarders。循环发给订阅者
   while(participant->udp_sock > 0 &&...){
    struct sockaddr *address = (struct sockaddr *)&rtp_forward->serv_addr;
    sendto(participant->udp_sock, buf, len, 0, address, addrlen);
   }
}
}


2 REMB包

janus在客户端开始的时候,发4次REMB包,确定带宽。但没抓到服务器发的REMB包
/* We send a few incremental REMB messages at startup */
janus.plugin.videoroom.jcfg配置bitrate = 128000。
bitrate = bitrate/participant->remb_startup;=128000/4=32000。
bitrate=32000 (24 bytes)
bitrate=42666 (24 bytes)
bitrate=64000 (24 bytes)
bitrate=128000 (24 bytes)

带宽计算:brMantissa * 2^ brExp。Numssrc一般为1。

 
客户端调节带宽发送json消息,可能是客户端没有发送RTCP包接口?
{"janus":"message","body":{"bitrate":2000000},"transaction":"aGiLtWI1Ml0R"}
客户端发送 json消息  服务器janus   REMB包  其它客户端。?不如直接都REMB包方便些

3 mute

客户端只是设置值,没有调函数使其生效。(还是我没找到)

transceiver.sender.track.enabled = mute ? false : true;

Echo Test才有enable audio/video。

1 client向janus发送json消息,2 janus向远端发送event的事件通知。

{"janus":"message","body":{"audio":false},"transaction":"J8TGbOpaonZx"}

enable video,发送请求PLI包。

Just (re-)enabled video, sending a PLI to recover it。

4 加锁

结构体janus_transport_session、janus_ice_peerconnection、janus_ice_handle、janus_videoroom、janus_videoroom_session、janus_videoroom_publisher等都有janus_mutex。

每个函数都加锁了。

### Janus-Pro 内置采样器功能与使用方法 #### 一、内置采样器概述 Janus-Pro 配备了先进的内置采样器,旨在优化文本到图像的生成过程。这些采样器不仅提高了生成图像的质量和稳定性,还增强了模型对于复杂提示的理解能力[^1]。 #### 二、主要特性 - **高质量输出**:相较于早期版本,新采样算法显著提升了最终作品的清晰度与细腻程度。 - **稳定性能表现**:即使面对较短或模糊不清的文字描述,也能保持一致性的优质产出。 - **增强细节描绘**:特别擅长捕捉并呈现细微之处,使得每一幅由文字转化而来的画面都充满生机与真实感[^2]. #### 三、具体操作指南 为了更好地利用这一强大工具,在实际应用过程中可以遵循如下建议: ##### 设置参数范围 当调用 API 或者命令行接口时,可以通过指定 `sampler` 参数来选择不同的采样策略。常见的选项包括但不限于: ```json { "prompt": "A beautiful sunset over the ocean", "width": 384, "height": 384, "num_inference_steps": 50, "guidance_scale": 7.5, "sampler": "ddim" } ``` 其中 `"sampler"` 字段决定了采用哪种具体的抽样方式;例如这里选择了去噪扩散隐式模型(DDIM),它能够在较少迭代次数内获得较为理想的结果[^3]。 ##### 调整超参组合 除了基本配置外,还可以进一步微调其他影响因素如步数 (`num_inference_steps`) 及指导强度 (`guidance_scale`) 来探索更多可能性。适当增加前者可使图案更加精细逼真;后者则用于平衡创意自由度同忠实还原输入语义间的关系。 ##### 实验不同模式 尝试切换至多种预设方案之一——比如 PLMS (Probabilistic Latent Modeling Sampling),以期达到特定风格偏好或是解决某些棘手场景下的难题。每种方法都有各自特点,值得深入研究比较。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值