实现一个简单的RTSP客户端/示例



我只是想用Boost Asio实现一个非常非常小的RTSP客户端。它只需要SETUP,然后服务器发送PLAY命令,然后在某个时刻请求TEARDOWN

困扰我的是实现本身。对于连接本身,我这样做就像我想要一个TCP连接

tcp::resolver resolver(*io_service);
tcp::resolver::query query("192.168.0.42","554");
tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
tcp::resolver::iterator end;

tcp::socket socket(*io_service);
boost::system::error_code error = boost::asio::error::host_not_found;
while (error && endpoint_iterator != end)
{
    socket.close();
    socket.connect(*endpoint_iterator++, error);
}

然后消息本身被公式化为:

boost::asio::streambuf request;
std::ostream request_stream(&request);
request_stream << "DESCRIBE " << "rtsp://192.168.0.42/mpeg4?multicast/ RTSP/1.0rnCSeq: 1rn";
boost::asio::write(socket, request);

现在,如果我发送这个消息并用Wireshark捕获它,它不会将其识别为RTSP消息。

那么我做错了什么?我只是在流中制定了错误的请求吗?还是我需要使用完全不同类型的连接?

有没有关于如何实现一个简单的RTSP客户端的例子?我什么也找不到。请不要建议使用任何其他的库,如libcurl,我需要自己实现它。

您需要在DESCRIBE消息的末尾再加一个"\r\n"。

request_stream << "DESCRIBE " << "rtsp://192.168.0.42/mpeg4?multicast/ RTSP/1.0rnCSeq: 1rnrn";

相关内容

  • 没有找到相关文章

最新更新