2016-07-29 93 views
0

我正在使用Qt和libvlc爲ip camera流創建一個gui。在我完成它之後,我開始對錯誤的值NULLs進行測試......等等。我的問題是,當我給一個錯誤的字符串作爲網絡鏈接時,我不會將NULL作爲返回值。部分代碼是這樣的qt ip camera stream libvlc返回值

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

那麼我如何捕捉不良鏈接?

+0

您是否嘗試過vlc-qt?這可能會幫助你 – Zen

+0

我有一個問題得到它與DLL和版本的工作,我決定跳過中間人... –

回答

0

我用libvlc_media_player_get_state函數解決了我的問題。我忽略了libvlc_media_player_play返回值,我只是輪詢媒體播放器的當前狀態,直到我從IDLE/CLOSE和OPENING處得到不同的狀態。在壞鏈接上,我得到了一個錯誤狀態,並且在正確的鏈接上我獲得了播放狀態。