现在项目有个需求,就是把Android录屏数据实时发送给另外一个Linux设备显示,就是串流传屏。要求延迟50ms内。
要求用RTSP协议Android推流和Linux拉流,不需要复杂的服务器。
在网上找了很多,有用live555,有用ZLMediaKit 我不需要这么复杂,因为Android支持mediacodec,已经把录屏数据编码成H265格式了。并且我接收端最多三个,一般就一个。
求一个简单的Native C++ RTSP的库。各位大拿有没有合适的?
谢谢。
现在项目有个需求,就是把Android录屏数据实时发送给另外一个Linux设备显示,就是串流传屏。要求延迟50ms内。
要求用RTSP协议Android推流和Linux拉流,不需要复杂的服务器。
在网上找了很多,有用live555,有用ZLMediaKit 我不需要这么复杂,因为Android支持mediacodec,已经把录屏数据编码成H265格式了。并且我接收端最多三个,一般就一个。
求一个简单的Native C++ RTSP的库。各位大拿有没有合适的?
谢谢。
以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
你可以尝试使用Live555库,它是一个开源的流媒体库,支持RTSP协议。虽然你可能觉得它有点复杂,但它是一个完整的解决方案,可以满足你的需求。以下是如何在项目中使用Live555库的简要说明:
git clone https://github.com/ live555/live555.git
cd live555
./genMakefiles linux
make
sudo make install
#include "liveMedia.hh"
#include "BasicUsageEnvironment.hh"
#include "RTSPClient.hh"
#include "liveMedia.hh"
#include "BasicUsageEnvironment.hh"
#include "RTSPClient.hh"
int main(int argc, char* argv[]) {
if (argc != 2) {
fprintf(stderr, "Usage: %s <rtsp-url>
", argv[0]);
return 1;
}
char const* rtspURL = argv[1];
TaskScheduler* scheduler = BasicTaskScheduler::createNew();
UsageEnvironment* env = BasicUsageEnvironment::createNew(*scheduler);
RTSPClient* rtspClient = RTSPClient::createNew(*env, rtspURL);
if (rtspClient == NULL) {
*env << "Failed to create a RTSP client for URL \"" << rtspURL << "\": " << env->getResultMsg() << "
";
exit(1);
}
MediaSession* session = MediaSession::createNew(*env, rtspClient, "video", "receivedVideoPayload");
if (session == NULL) {
*env << "Failed to create a MediaSession for URL \"" << rtspURL << "\": " << env->getResultMsg() << "
";
exit(1);
}
// 在这里添加你的代码,处理接收到的视频帧数据
*env << "Playing the stream... (Ctrl-C to exit)
";
env->taskScheduler().doEventLoop(); // does not return
return 0;
}
这个示例代码创建了一个RTSP客户端,连接到指定的RTSP URL(即Android设备的RTSP服务器地址),并创建一个MediaSession对象来接收视频流。你可以在// 在这里添加你的代码,处理接收到的视频帧数据
这一行下面添加你的代码,处理接收到的视频帧数据。
希望这个简单的示例能帮助你入门Live555库。如果你需要更多的帮助,请随时提问。