diff --git a/main.cpp b/main.cpp index 6edbe72..1e5e04a 100644 --- a/main.cpp +++ b/main.cpp @@ -1,4 +1,6 @@ #include +#include +#include #include #include @@ -8,75 +10,131 @@ #include #include +#include #include #include +#include -using namespace std; +//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); + static write_data(void*, size_t, size_t , void*); + int sender_holen(void); + int sender_laden(void); + int Sender; + QString Name[10000]; + QString URL[10000]; + int sender_ausgeben(void); + int play(void); + QFrame *videoWidget; }; Player::Player(){ - cout << "starte..." << endl; + std::cout << "starte..." << std::endl; + this->sender_holen(); + this->sender_laden(); + this->sender_ausgeben(); + + QMainWindow *window; + QLabel *label; + QPushButton *button; window = new QMainWindow; + window->resize(1024,576); videoWidget = new QFrame; label = new QLabel("Hello World"); - window->resize(1024,576); + button = new QPushButton("Hallo"); + window->setWindowTitle("vlc-vdr"); window->setCentralWidget(videoWidget); window->setCentralWidget(label); + window->setCentralWidget(button); window->show(); + //button.show(); - this->play(); + //this->play(); + //this->play(); } Player::~Player(){ - cout << "beende..." << endl; + std::cout << "beende..." << std::endl; } -Player::sender_holen(){ +Player::write_data(void *ptr, size_t size, size_t nmemb, void *stream){ + size_t written = fwrite(ptr, size, nmemb, (FILE *)stream); + return written; +} +int Player::sender_holen(void){ + CURL *curl; + FILE *file; + CURLcode res; + curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); - if(curl) { + 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 */ + file = fopen("channels.m3u", "wb"); + //curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); + //curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, this->write_data); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, file); 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 */ + fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); + else + std::cout << "Sender holen und in channels.m3u speichern..." << std::endl; curl_easy_cleanup(curl); } + fclose(file); + return 0; +} +int Player::sender_laden(void){ + int x=0; + this->Sender=0; + QFile file("channels.m3u"); + if(file.open(QIODevice::ReadOnly | QIODevice::Text)){ + while (!file.atEnd()){ + QByteArray line = file.readLine(); + if(line.toStdString()=="#EXTM3U\n") // erste Zeile überspringen + continue; + if(line.toStdString()=="\n") // lezte Zeile überspringen + break; + QString string = line; + string.replace(QString("#EXTINF:-1,"), QString("")); + string.replace(QString("\n"), QString("")); // Zeilenede entfernen + if(++x%2){ + std::cout << this->Sender << " Name: " << string.toStdString() << std::endl; + this->Name[this->Sender]=string; + } else { + std::cout << this->Sender <<" Url: " << string.toStdString() << std::endl; + this->URL[this->Sender++]=string; + } + } + } else { + std::cout << "Fehler channels.m3u" << std::endl; + return 1; + } return 0; } -Player::play(void){ - cout << "play..." << endl; +int Player::sender_ausgeben(void){ + for(int x=0;xSender;x++){ + std::cout << x << ". " << this->Name[x].toStdString() << "," << this->URL[x].toStdString() << std::endl; + } + return 0; +} +int Player::play(void){ + libvlc_instance_t * inst; + libvlc_media_player_t *mp; + libvlc_media_t *m; + + std::cout << "play..." << std::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); @@ -85,7 +143,7 @@ Player::play(void){ libvlc_media_release (m); #if defined(Q_OS_WIN) // Windows -// libvlc_media_player_set_hwnd(mp, (void *)videoWidget->winId()); + 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 @@ -105,13 +163,12 @@ Player::play(void){ libvlc_media_player_release (mp); libvlc_release (inst); - cout << "play...stop" << endl; + std::cout << "play...stop" << std::endl; return 0; } - int main(int argc, char* argv[]) { QApplication app(argc, argv); - Player a; + Player player; return app.exec(); }