qt-ip相机流libvlc返回值

qt ip camera stream libvlc return values

本文关键字:返回值 libvlc 相机 qt-ip      更新时间:2023-10-16

我正在使用Qt和libvlc为ip摄像机流创建一个gui。在我完成它之后,我开始针对错误的值NULLs测试它。。。等等。我的问题是,当我给出一个错误的字符串作为网络链接时,我不会得到NULL作为返回值。代码的一部分就是这个

const char * const vlc_args[] = {
    "--preferred-resolution=576",
    "--network-caching=250",
    "--no-audio"
};
my_vlcInstance = libvlc_new(3, vlc_args);
if (my_vlcInstance == NULL){
    emit sendDebugMessage("Couldn't create vlc instance", "Red");
    return;
}
my_LiveMedia = libvlc_media_new_location(my_vlcInstance, link.toStdString().c_str());
if (my_LiveMedia == NULL){
    emit sendDebugMessage("Error installing media", "Red");
    return;
}
my_LiveMediaPlayer = libvlc_media_player_new_from_media(my_LiveMedia);
if (my_LiveMediaPlayer == NULL){
    emit sendDebugMessage("Error creating media player", "Red");
    return;
}

现在链接是一个包含网络链接的QString。我知道不好的事情会发生,因为我可以在Visual studio调试窗口中看到错误。"核心输入错误:打开`dsfgdfgfg'失败"您的输入无法打开"之类的内容。为什么我不能发现这些错误呢?

此外。。。当我按下开始录制按钮时,会生成一个文件(由于没有流,显然已损坏),并且libvlc函数调用不会返回文档中指定的错误。例如:

if (libvlc_media_player_play(my_LiveMediaPlayer) == 0){
    emit sendDebugMessage("Live mode started successfully", "Green");
    isLive = true;
}

那么我该如何抓住坏链接呢?

我用libvlc_media_player_get_state函数解决了问题。我忽略libvlc_media_player_play返回值,只轮询媒体播放器的当前状态,直到我从IDLE/CLOSE和OPENING获得不同的状态。在坏的链接上我得到一个错误状态,在正确的链接上,我得到播放状态。