gpt4 book ai didi

c++ - 带有 libcurl v7.43.0 的 Axis Camera 上的 RTSP DESCRIBE 返回 RTSP 错误代码 400

转载 作者:行者123 更新时间:2023-11-30 05:40:42 32 4
gpt4 key购买 nike

我收到一个 HTTP 错误 400,以响应下面显示的函数正在处理的以下 RTSP URL。

描述 rtsp://root:pass@192.168.1.47/axis-media/media.amp ?videocodec=h264/

我使用的网络摄像机是最新的 AXIS H264 摄像机。

我使用的libcurl版本是v7.43.0

bool CHttpClientCurl::Get(){ //初始化 curl CURLcode res = CURLE_OK; 如果(m_curl == NULL) { m_sError = L"CURL 句柄为 NULL。"; 返回假;

m_sBuffer.clear();
// initialize this curl session
curl_easy_reset(m_curl);
char sUrl[8192];
wcstombs(sUrl, m_sUrl.c_str(), m_sUrl.length());
sUrl[m_sUrl.length()] = '\0';

curl_version_info_data *data = curl_version_info(CURLVERSION_NOW);
printf(" cURL V%s loaded\n", data->version);
if (m_curl != NULL) {
curl_easy_setopt(m_curl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(m_curl, CURLOPT_NOPROGRESS, 1L);
curl_easy_setopt(m_curl, CURLOPT_PROTOCOLS, CURLPROTO_RTSP);
res = curl_easy_setopt(m_curl, CURLOPT_URL, sUrl);


// request server options
printf("\nRTSP: OPTIONS %s\n", sUrl);
curl_easy_setopt(m_curl, CURLOPT_PROTOCOLS, CURLPROTO_RTSP);
res = curl_easy_setopt(m_curl, CURLOPT_RTSP_STREAM_URI, sUrl);
curl_easy_setopt(m_curl, CURLOPT_RTSP_REQUEST, CURL_RTSPREQ_DESCRIBE);
curl_easy_setopt(m_curl, CURLOPT_RTSP_TRANSPORT, "RTP/AVP;unicast;client_port=64378-64379");
// curl_easy_setopt(m_curl, CURLOPT_RTSP_SESSION_ID, "56789");
res = curl_easy_perform(m_curl);
int64_t nHttpCode = 0;
curl_easy_getinfo(m_curl, CURLINFO_RESPONSE_CODE, &nHttpCode);
m_nStatusCode = nHttpCode;
if (res != CURLE_OK)
{
std::wstringstream ss;
ss << curl_easy_strerror(res);
m_sError = L"Error occurred - " + std::wstring(ss.str());
return false;
}
else if (nHttpCode != 200)
{
SetErrorString(nHttpCode);
return false;
}
}
return true;

如果 URL 或 C++ 函数中有错误,有人可以告诉我吗?

非常感谢。

最佳答案

解决此问题的方法是首先在 rtsp 字符串中提供用户凭据,然后连续两次发出 RTSP DESCRIBE。如果用户凭据不正确或丢失,第一个 RTSP DESCRIBE 请求将导致 HTTP 401 错误代码。第二个 DESCRIBE 请求将产生一个 HTTP 200 OK 代码。在第二个 RTSP DESCRIBE 返回 HTTP 200 OK 后,您可以发出 RTSP SETUP 请求,然后发出 RTSP PLAY 请求,该请求应返回 HTTP 200 并创建 RTSP 流。

关于c++ - 带有 libcurl v7.43.0 的 Axis Camera 上的 RTSP DESCRIBE 返回 RTSP 错误代码 400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31506917/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com