关于Freeswitch 视频采用proxy_media 时, 错误设置payload type 为0的解决
来源:互联网 发布:c语言杨辉三角不用数组 编辑:程序博客网 时间:2024/06/09 16:41
在Freeswitch中将测试视频时, 将媒体配置为proxy media模式时, 发现Freeswitch 将视频媒体流的payload type 改成0. 导致终端认为不对.
经过几个小时的研究,发现是Freeswitch 中因为对视频流 proxy media时, 不通过negotiate ,所以它的rtp session设置的payload为0
而在switch_rtp. c 的函数
SWITCH_DECLARE(int) switch_rtp_write_frame(switch_rtp_t *rtp_session, switch_frame_t *frame) 中
if (!switch_test_flag(rtp_session, SWITCH_RTP_FLAG_UDPTL)) {
if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_VIDEO) ) {
send_msg->header.pt = rtp_session->payload; // 这里直接用rtp_sesion->payload 设置发送payload, 而proxy_media时session的payload没有设置.导致为0
}
send_msg->header.ssrc = htonl(rtp_session->ssrc);
}
修改为:
if (!switch_test_flag(rtp_session, SWITCH_RTP_FLAG_UDPTL)) {
if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_VIDEO)&& rtp_session->payload > 0) {
send_msg->header.pt = rtp_session->payload;
}
send_msg->header.ssrc = htonl(rtp_session->ssrc);
}
就ok了.
测试时, 我采用的是稳定版 FreeSWITCH version: 1.2.0-rc2+git~20120807T222301Z~d806014009 (1.2.0-rc2; git at commit d806014009 on Tue, 07 Aug 2012 22:23:01 Z)
后来下载最新的开发版本,发现这个bug已经修复了.
- 关于Freeswitch 视频采用proxy_media 时, 错误设置payload type 为0的解决
- 关于浏览器Ajax请求Type为Request Payload而不是Form Data
- freeswitch里面的esl子目录相关错误解决(编译、运行)
- FreeSWITCH的端口设置
- 知名Payload type与音视频编解码对照表
- 1364错误 关于 MySQL 的float 问题设置为空和0,没有相应 1364错误
- 在FreeSWITCH中设置视频通话
- 在FreeSWITCH中设置视频通话
- 在FreeSWITCH中设置视频通话
- 为解决的错误
- 【解决】关于蓝牙模块串口设置总是错误的问题
- 关于解决No service of type Factory available in ProjectScopeServices的错误
- RTP payload type
- RTP payload type
- RTP payload type
- SDP Payload Type Definitions
- RTP payload type
- RTP payload type
- 如何知道软件(如Lodop)很受欢迎?
- vim使用F5编译C语言程序
- 外观,代理与中介者模式
- Sign in as Different User and SharePoint 2013
- linux内核中的likely和unlikely
- 关于Freeswitch 视频采用proxy_media 时, 错误设置payload type 为0的解决
- for的基本用法 99乘法表
- 计算机科学与技术专业编译原理之词法分析代码
- CMD Telnet 命令行自动发送邮件脚本
- 分布式搜索Elasticsearch源码分析之二------索引过程源码概要分析
- 成功的条件:高人指点、贵人相助、小人监督、个人奋斗
- 编译原理之 语法分析c代码
- GDI+在Vistual C++ 2010中的配置
- 数组排序