LIVE555 学习工作记录
  3cAxQ5E22S4z 2023年11月05日 39 0

Windows搭建RTSP服务器

准备

live555-latest.tar.gz:下载网址http://www.live555.com/liveMedia/public/

步骤

1)修改win32config文件

a. TOOLS32 = c:\Program Files\DevStudio\Vc改为TOOLS32 = TOOLS32 =  C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC(你的vs目录)

b. LINK_OPTS_0 = $(linkdebug) msvcirt.lib改为LINK_OPTS_0 = $(linkdebug) msvcrt.lib

2)拷贝Win32.Mak和NtWin32.Mak文件到Live555目录下的几大模块中,当前VS2015安装到C盘,所在的目录为

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include

3)启动Visual Studio Command Prompt(2015),进入到Live555库

4) 执行genWindowsMakefiles.cmd

5) 进入liveMedia目录,执行nmake -f liveMedia.mak

依次进入Live555目录中的其他目录,执行相应的mak文件,然后可以编译出不同功能模块的库和可执行程序

6)Rtsp服务器所在的目录在mediaServer目录下,拷贝一个h264的流媒体文件到当前目录,然后启动live555MediaServer.exe

通过VLC播放器,输入url:rtsp://192.168.0.107/smoke.264, 就可以顺利进行视频的播放


Windows搭建调试环境

静态库模块:BasicUsageEnvironment groupsock liveMedia UsageEnvironment

rtsp服务器主程序:mediaServer

VS添加头文件,和源码文件

静态库:

常规/配置类型:静态库.lib

C/C++/常规/附加包含目录 将四个模块的include目录添加

库管理器/输出文件 指定输出文件

C/C++/代码生成/运行库:多线程调试MTd

出错处理

1)'fopen': This function or variable may be unsafe. Consider using fopen_s instead

C/C++预处理器添加宏_CRT_SECURE_NO_DEPRECATE

2)'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead  

C/C++预处理器添加宏_WINSOCK_DEPRECATED_NO_WARNINGS

3)无法解析的外部符号

无法解析的外部符号 _initializeWinsockIfNecessary

无法解析的外部符号 _our_random

无法解析的外部符号 _OnExpire

groupsock下有inet.c,liveMedia下有rtcp_from_spec.c,必须添加到工程

下载资料中提供了debugrtsp压缩包


花屏问题解决记录

场景

采用live555将摄像机的视频流通过RTSP的方式转发出去,出现花屏情况,目前转发的是4K的数据


解决方案

1 OutPacketBuffer

OutPacketBuffer默认大小只有60000,即是unsigned OutPacketBuffer::maxSize = 60000;

当前设置成1210241024


客户端TCP取流

live555 设置RTP over RTSP(TCP)

live555工程中testprogs作为一个简单的rtsp客户端,默认采用udp进行音视频数据的传输, 如果需要使用tcp进行数据的传输,可以进行如下代码的修改:

testRTSPClient.cpp文件#define REQUEST_STREAMING_OVER_TCP True即可

源代码

// By default, we request that the server stream its data using RTP/UDP.
// If, instead, you want to request that the server stream via RTP-over-TCP,  
//change the following to True:

#define REQUEST_STREAMING_OVER_TCP True


VLC默认播放TCP音视频流设置如下:

去复用器>RTP/RTSP>

testrtspclient客户端建立rtp over tcp 异常问题

场景

testrtspclient通过rtp over tcp 跟服务器进行连接,在进行几分钟的通信之后,出错如下:

envir() << “RTCPInstance error: Hit limit when reading incoming packet over TCP. (fNumBytesAlreadyRead (”

<< fNumBytesAlreadyRead << “) >= maxRTCPPacketSize (” << maxRTCPPacketSize

<< “)). The remote endpoint is using a buggy implementation of RTP/RTCP-over-TCP. Please upgrade it!\n”;


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

3cAxQ5E22S4z