qt ip camera stream libvlc 返回值

Posted

技术标签:

【中文标题】qt ip camera stream libvlc 返回值【英文标题】:qt ip camera stream libvlc return values 【发布时间】:2016-07-29 11:44:27 【问题描述】:

我正在使用 Qt 和 libvlc 为 ip 摄像机流创建 gui。完成后,我开始针对错误的值 NULL 对其进行测试...等等。我的问题是,当我将错误的字符串作为网络链接时,我不会将 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;

那么我该如何捕捉坏链接呢?

【问题讨论】:

你试过vlc-qt吗?这可能对你有帮助 我在让它与 dll 和版本一起工作时遇到了问题,我决定跳过中间人...... 【参考方案1】:

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

【讨论】:

以上是关于qt ip camera stream libvlc 返回值的主要内容,如果未能解决你的问题,请参考以下文章

QT开发笔记(Camera)

OSG QT :获取鼠标的world坐标

使用Android IP Camera(python)在openCv中直播

jvc ip camera vnc10u 设置

HTML5实现IP Camera网页输出

UVC Camera视频数据流程代码分析