原有使用中,返回数据流时需要查询KEY所对应的数据流支持多数据源。对多个支持不友好
在ARM 与其它非WINDOWS平台编译时引用头文件找不到,要修改代码。
开箱即用原则,修改部分代码就不一一列出。对代码感兴趣可下载2个版本做对比
一、删除原有接口( IPullRTSPClient)
二、调用函数只关心一个API实现多个源数据采集拉取功能。
void add(const std::string& key, const std::string& url, const std::function<void(codec_data* data)>& frame);
三、测试部分
void addStreamFrame(codec_data* data)
{
if (data->len <= 0)
return;
static bool bFindHead = false;
if (!bFindHead)
{
if (data->begin_sign == 1)
{
bFindHead = true;
}
else
{
return;
}
}
static int count = 0;
count++;
static FILE* file_ = fopen("d:/file.h264", "wb");
static int i = 0;
if (count < 600)
{
fwrite(data->data, data->len, 1, file_);
}
else if (count == 600)
{
fflush(file_);
fclose(file_);
exit(0);
}
}
int main()
{
live555Pull obj;
//C++使用方式
//pull->add(key, m_url, std::bind(&VideoDecoder::addStreamFrame, videoDecoder.get(), std::placeholders::_1));
//测试
obj.add("test001", "rtsp://192.168.1.2/test.264", std::bind(&addStreamFrame, std::placeholders::_1));
while (true)
{
Sleep(1000);
}
}
四、相关链接