QT プロジェクトで VLC を使用してビデオを表示するために 1 日を費やしました。
回線を使用しない場合、ビデオは機能しますlibvlc_media_player_set_hwnd
。この行がないと、VLC はウィンドウを自動的に生成します。ビデオを表示するために独自のウィンドウまたはサブウィンドウ領域を選択できることは非常に重要です。
エラーは次のとおりです。
main vout display error: Failed to set on top
ビデオを表示するために、さまざまな QT クラスを使用しました。QVideoWidget、QWidget、QFrame、および QMainWindow。何も変わりませんでした。(OSはウィンドウズです)
インターネットにはさまざまなソリューションがたくさんあります。以下のコードで動作するはずです。
libvlc のさまざまなバージョンも試しましたが、エラーは常に同じでした。
play() メソッド:
void MainWindow::play()
{
libvlc_instance_t * inst;
libvlc_media_player_t *mp;
libvlc_media_t *m;
/* Load the VLC engine */
inst = libvlc_new (0, NULL);
if(!inst)
std::cout << "Can't load video player plugins" << std::endl;
m = libvlc_media_new_path (inst, "content.avi");
/* Create a media player playing environment */
mp = libvlc_media_player_new_from_media (m);
HWND windowID = reinterpret_cast<HWND>(this->winId());
/* It works without this line */
libvlc_media_player_set_hwnd(mp, windowID);
/* play the media_player */
libvlc_media_player_play (mp);
Sleep(uint(10000)); /* Let it play a bit */
/* Stop playing */
libvlc_media_player_stop (mp);
/* Free the media_player */
libvlc_media_player_release (mp);
libvlc_release (inst);
}
main.cpp:
QApplication a(argc, argv);
MainWindow w;
w.show();
w.play();
return a.exec();
役立つ情報を事前にありがとう。
ダリアン