c++ - 如何使用live555串流视频?

标签 c++ qt video-streaming live555

我使用 C++ 和 Qt 创建一个项目,将视频从 KIT armTiny6410 流式传输到笔记本电脑。我用live555来做。这是流式文件的线程。但我不知道我需要包括什么,因为当我编译时我得到这些错误:

error: 'TaskScheduler' was not declared in this scope error: 'scheduler' was not declared in this scope error: 'BasicTaskScheduler' has not been declared error: 'UsageEnvironment' was not declared in this scope error: 'env' was not declared in this scope error: 'BasicUsageEnvironment' has not been declared error: 'UserAuthenticationDatabase' was not declared in this scope error: 'authDB' was not declared in this scope error: 'RTSPServer' was not declared in this scope error: 'rtspServer' was not declared in this scope

void ThreadStream::run()
{
    // Begin by setting up our usage environment:
    TaskScheduler* scheduler = BasicTaskScheduler::createNew();
    UsageEnvironment* env = BasicUsageEnvironment::createNew(*scheduler);

    UserAuthenticationDatabase* authDB = NULL;
    #ifdef ACCESS_CONTROL
    // To implement client access control to the RTSP server, do the following:
    authDB = new UserAuthenticationDatabase;
    authDB->addUserRecord("username1", "password1"); // replace these with real strings
    // Repeat the above with each <username>, <password> that you wish to allow
    // access to the server.
    #endif

    // Create the RTSP server.  Try first with the default port number (554),
    // and then with the alternative port number (8888):
    RTSPServer* rtspServer;
    portNumBits rtspServerPortNum = 554;
    rtspServer = DynamicRTSPServer::createNew(*env, rtspServerPortNum, authDB);
    if (rtspServer == NULL) {
        rtspServerPortNum = 8888;
        rtspServer = DynamicRTSPServer::createNew(*env, rtspServerPortNum, authDB);
    }
    if (rtspServer == NULL) {
        QString msg = "Failed to create RTSP server";
        emit notifyMessage(msg);
        exit(1);
    }
    QString msge = "LIVE555 Media Server\n";
    char* urlPrefix = rtspServer->rtspURLPrefix();
    msge += "Play streams from this server using the URL\n\t"
        +  QString(urlPrefix) + "<filename>\nwhere <filename> is a file present in the current directory.\n"
        + "Each file's type is inferred from its name suffix:\n"
        + "\t\".264\" => a H.264 Video Elementary Stream file\n"
        + "\t\".aac\" => an AAC Audio (ADTS format) file\n"
        + "\t\".ac3\" => an AC-3 Audio file\n"
        + "\t\".amr\" => an AMR Audio file\n"
        + "\t\".dv\" => a DV Video file\n"
        + "\t\".m4e\" => a MPEG-4 Video Elementary Stream file\n"
        + "\t\".mkv\" => a Matroska audio+video+(optional)subtitles file\n"
        + "\t\".mp3\" => a MPEG-1 or 2 Audio file\n"
        + "\t\".mpg\" => a MPEG-1 or 2 Program Stream (audio+video) file\n"
        + "\t\".ts\" => a MPEG Transport Stream file\n"
        + "\t\t(a \".tsx\" index file - if present - provides server 'trick play' support)\n"
        + "\t\".wav\" => a WAV Audio file\n"
        + "\t\".webm\" => a WebM audio(Vorbis)+video(VP8) file\n";

    emit notifyMessage(msge);

    env->taskScheduler().doEventLoop(); // does not return
}

我的live555库在:/urs/lib/live 请帮我!非常感谢!

最佳答案

您需要包含这三个文件,它们位于 liveMedia/includeBasicUsageEnvironment/includegroupsock/include 文件夹中源代码目录

#include <liveMedia.hh>
#include <BasicUsageEnvironment.hh>
#include <GroupsockHelper.hh>

关于c++ - 如何使用live555串流视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22264905/

相关文章:

C++ 宏和重载

c++ - 在头文件中使用时无法识别结构

c++ - 使用 SCSI 传递的 ioctrl

c++ - 使用C++的新标准

c++ - QSortFilterProxyModel 不会动态更新过滤器?

Qt QList<QString> 数据库序列化

qt - 从 QFrame 和 QTabWidget 中删除边框线

google-app-engine - Google Application Engine 是高流量聊天网站的良好平台吗?

ssl - SSL 上的 RTSP (RTSPS)

ios - 在 iOS 设备上以编程方式限制 HLS 流的比特率