diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..6edbe72 --- /dev/null +++ b/main.cpp @@ -0,0 +1,117 @@ +#include + +#include +#include + +#include +#include + +#include +#include +#include +#include + +using namespace std; + +class Player{ + public: + Player(); + ~Player(); + + CURL *curl; + CURLcode res; + + QMainWindow *window; + QFrame *videoWidget; + QLabel *label; + + libvlc_instance_t * inst; + libvlc_media_player_t *mp; + libvlc_media_t *m; + private: + sender_holen(); + play(void); +}; +Player::Player(){ + cout << "starte..." << endl; + this->sender_holen(); + + window = new QMainWindow; + videoWidget = new QFrame; + label = new QLabel("Hello World"); + window->resize(1024,576); + window->setWindowTitle("vlc-vdr"); + window->setCentralWidget(videoWidget); + window->setCentralWidget(label); + window->show(); + + this->play(); +} +Player::~Player(){ + cout << "beende..." << endl; +} +Player::sender_holen(){ + curl = curl_easy_init(); + if(curl) { + curl_easy_setopt(curl, CURLOPT_URL, "http://192.168.101.9:3000/channels.m3u"); + /* example.com is redirected, so we tell libcurl to follow redirection */ + curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); + + /* Perform the request, res will get the return code */ + res = curl_easy_perform(curl); + /* Check for errors */ + if(res != CURLE_OK) + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(res)); + + /* always cleanup */ + curl_easy_cleanup(curl); + } + return 0; +} +Player::play(void){ + cout << "play..." << endl; + /* Load the VLC engine */ + inst = libvlc_new (0, NULL); + + /* Create a new item */ + m = libvlc_media_new_location (inst, "http://192.168.101.9:3000/S19.2E-133-33-51"); + //m = libvlc_media_new_path (inst, "/path/to/test.mov"); + + /* Create a media player playing environement */ + mp = libvlc_media_player_new_from_media (m); + + /* No need to keep the media now */ + libvlc_media_release (m); + +#if defined(Q_OS_WIN) // Windows +// libvlc_media_player_set_hwnd(mp, (void *)videoWidget->winId()); +#elif defined(Q_OS_MAC) // Mac + libvlc_media_player_set_nsobject(mp, (void *)videoWidget->winId()); +#else //Linux + int windid = _videoWidget->winId(); + libvlc_media_player_set_xwindow (mp, windid ); +#endif + + /* play the media_player */ + libvlc_media_player_play (mp); + + Sleep(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); + cout << "play...stop" << endl; + return 0; +} + + +int main(int argc, char* argv[]) { + QApplication app(argc, argv); + Player a; + return app.exec(); +} diff --git a/vlc-vdr.pro b/vlc-vdr.pro new file mode 100644 index 0000000..334a439 --- /dev/null +++ b/vlc-vdr.pro @@ -0,0 +1,11 @@ + +QT += core gui + +greaterThan(QT_MAJOR_VERSION, 4) : QT += widgets + +SOURCES += \ + main.cpp + +INCLUDEPATH += "." +win32:LIBS += -L"." -lcurl -llibvlc +DEFINES += CURL_STATICLIB VLC_STATICLIB