使用live555的testOnDemandRTSPServer推h264视频文件,视频播放完毕后会停止推流,在视频时长较短的情况下使用不便,可通过修改live555源码将其配置为循环推流。
ByteStreamFileSource.cpp
在live555 文件操作地方,文件读完了,重新读取即可,代码修改如下:
ByteStreamFileSource.cpp
void ByteStreamFileSource::doGetNextFrame() {
if (feof(fFid) || ferror(fFid) || (fLimitNumBytesToStream && fNumBytesToStream == 0)) {
//todo 把文件读指针移到文件开头实现循环读取
fseek(fFid, 0, SEEK_SET); //add this line
}
#ifdef READ_FROM_FILES_SYNCHRONOUSLY
doReadFromFile();
#else
if (!fHaveStartedReading) {
// Await readable data from the file:
envir().taskScheduler().turnOnBackgroundReadHandling(fileno(fFid),
(TaskScheduler::BackgroundHandlerProc*)&fileReadableHandler, this);
fHaveStartedReading = True;
}
#endif
}