in sample/src/LiveChannel/LiveChannelSample.cc [124:179]
int LiveChannelSample::GetLiveChannelHistory()
{
isSuccess_ = false;
int i = 0;
GetLiveChannelHistoryResult result;
timeStart_ = time(NULL);
timeEnd_ = timeStart_ + 3600;
std::cout << "timeStart: " << timeStart_ << " End: " << timeEnd_ << std::endl;
time_t expireTime = timeEnd_;
GenerateRTMPSignedUrlRequest request(bucket_, channelName_, "test_play_list.m3u8", expireTime);
auto generateOutcome = client->GenerateRTMPSignedUrl(request);
if(!generateOutcome.isSuccess())
{
std::cout << "GenerateRTMPSignedUrl fail" <<std::endl;
return -1;
}else{
signedRTMPUrl_ = generateOutcome.result();
std::cout << "GenerateRTMPSignedUrl success URL: " << signedRTMPUrl_ << std::endl;
}
// use ffmpeg or some other tools to push rtmp stream asynchronizely to signed url
// we will wait 15 minutes at most
while(1)
{
if(i>MAX_LOOP_TIMES)
break;
auto getOutcome = client->GetLiveChannelHistory(GetLiveChannelHistoryRequest(bucket_, channelName_));
if(getOutcome.isSuccess())
{
std::vector<LiveRecord> vec = getOutcome.result().LiveRecordList();
if(vec.size() > 0)
{
isSuccess_ = true;
result = getOutcome.result();
std::cout << "LiveRecordList size " << vec.size() << std::endl;
for(size_t j=0; j <vec.size(); j++)
{
std::cout << " LiveRecord: " << std::endl;
std::cout << " startTime: " << vec[j].startTime << std::endl;
std::cout << " endTime: " << vec[j].endTime << std::endl;
std::cout << " remoteAddr: " << vec[j].remoteAddr << std::endl;
}
waitTimeinSec(30);
break;
}else{
std::cout << "warning: LiveRecordList size is 0" << std::endl;
waitTimeinSec(15);
}
}
i++;
}
return 0;
}