源码编译错误
未找到用户定义的文本运算符
modules\access\live555.cpp
严重性 代码 说明 项目 文件 行 禁止显示状态
错误(活动) E2474 未找到用户定义的文本运算符 live555 vlc-2.2.6.32-2015-master\modules\access\live555.cpp 310
p_sys->rtsp= new RTSPClientVlc( *p_sys->env, psz_url,
var_InheritInteger( p_demux, "verbose") > 1 ? 1 : 0,
"LibVLC/"VERSION, i_http_port, p_sys);
修改为
p_sys->rtsp= new RTSPClientVlc( *p_sys->env, psz_url,
var_InheritInteger( p_demux, "verbose") > 1 ? 1 : 0,
"LibVLC/" VERSION, i_http_port, p_sys);
msg_Dbg( p_demux, "version "LIVEMEDIA_LIBRARY_VERSION_STRING);
修改为
msg_Dbg( p_demux, "version " LIVEMEDIA_LIBRARY_VERSION_STRING);
修改原则是常量字符串跟宏定义之间需要空格
参数设置
输入时钟同步
使用vlc播放忽动忽停的网络流时,经常会遇到卡死的情况,将–clock-synchro设置为0即可解决
const char *vlc_args[]=
{
"--clock-synchro=0"
}
libvlc_instance *inst = libvlc_new(sizeof(vlc_args)/sizeof(vlc_args[0]), vlc_args);
该参数设置为0时,实时源关闭输入时钟同步
VS编译的版本不能播放tcp的流,而官网下载的release版本可以播放。
原因:
1、VS编译的版本中使用了live555的源码,其源码的版本号较低,而release版本中的 live555版本较高;
2、我们的服务器在rtsp流程中做了部分改变,在收到play请求后即发送rtp数据和play响应,为追求速度,两者的先后顺序未控制。这样老的live555版本只能在收到play响应后再解析rtp报文,因此先到来的rtp报文被误以为play响应解析。导致错误。
做法:
更新VS工程中live555的源码为最新代码,重新编译后解决问题