2016-07-29 9 views
0

私はQtとlibvlcを使って、ipカメラストリーム用のGUIを作成しています。私はそれを終えた後、私は間違った値NULLs ...などに対してそれをテストし始めた。私の問題は、私がネットワークリンクとして間違った文字列を与えるとき、戻り値としてNULLを取得しない。コードの一部が、この今qt ipカメラストリーム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

私はそれがdllsとバージョンで動作するようになる問題を抱えていたと私は中央の人をスキップすることに決めた... –

答えて

0

私はlibvlc_media_player_get_state関数で私の問題を解決しました。私はlibvlc_media_player_playの戻り値を無視し、IDLE/CLOSEとOPENINGとは異なる状態になるまで、メディアプレーヤーの現在の状態をポーリングするだけです。悪いリンクで私はエラー状態を取得し、正しいリンク上で私はプレイ状態になる。