0
点赞
收藏
分享

微信扫一扫

VS编译VLC源码 live555取流操作总结

源码编译错误

未找到用户定义的文本运算符

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的源码为最新代码,重新编译后解决问题

举报

相关推荐

0 条评论