c++ - Live555 TSX 文件索引

标签 c++ video live555

我正在查看 Live555 媒体服务器。它有一个用于“索引”传输流视频的可执行文件,其名称/用途如下:

MPEG2TransportStreamIndexer video.ts 

因此,如果视频名为 TransportStreamVideo.ts,则索引器会创建一个名为 TransportStreamVideo.tsx 的文件。注意与视频文件相同的名称只是添加了一个“x”或扩展名是“.tsx

我知道这是为了“恶作剧”,但我想知道它在内部是如何运作的。

所以我的问题是:Live555如何同时使用'.ts'文件和'.tsx'文件?

是否生成了全新的流以发送出去显示在客户端视频显示器上?

最佳答案

如果您在文件 DynamicRTSPServer.cpp 中查看 live555MediaServer 的代码,您将看到 session 是这样创建的:

  } else if (strcmp(extension, ".ts") == 0) {
    // Assumed to be a MPEG Transport Stream file:
    // Use an index file name that's the same as the TS file name, except with ".tsx":
    unsigned indexFileNameLen = strlen(fileName) + 2; // allow for trailing "x\0"
    char* indexFileName = new char[indexFileNameLen];
    sprintf(indexFileName, "%sx", fileName);
    NEW_SMS("MPEG Transport Stream");
    sms->addSubsession(MPEG2TransportFileServerMediaSubsession::createNew(env, fileName, indexFileName, reuseSource));
    delete[] indexFileName;
  } 

MPEG2TransportFileServerMediaSubsession 对象使用 .ts 文件及其关联的 .tsx 索引。

tsx 文件不是新流,它是传输流文件的索引。

关于c++ - Live555 TSX 文件索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34711645/

相关文章:

c++ - Live555:基于 "testOnDemandRTSPServer"的X264码流直播源码

c++ - 有多少并发的 rtsp 流可以通过 WAN 可靠地直播 555 流

c++ - 在 C++ 中创建跨平台兼容的目录

c++ - 是否允许通过指向另一个类的实例的指针发出信号?

php - 谷歌 YouTube API (v3) : how to access my unlisted/private videos from my server?

video - 使用 FFMPEG 创建的文件的问题

c++ - 使用 Live555 流式传输图像序列

c++ - Boost 序列化 text_iarchive 进程终止

c++ - GCC 5.3 : -fno-semantic-interposition 中的新选项

php - youtube-dl正在下载php文件而不是视频