qt ip 摄像机流 libvlc return 值

qt ip camera stream libvlc return values

我正在使用 Qt 和 libvlc 为网络摄像机流创建一个图形用户界面。完成后,我开始针对错误的 NULL 值对其进行测试......等等。我的问题是,当我将错误的字符串作为网络 link 时,我不会将 NULL 作为 return 值。部分代码是这样的

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;
}

now link 是一个包含网络 link 的 QString。我知道坏事会发生,因为我可以在 Visual studio 调试 window 中看到错误。 "core input error: open of `dsfgdfgfg' failed" "Your input can't be opened" 之类的。那么为什么我不能捕获这些错误?

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

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

那么我该如何捕捉坏的link?

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