vdr-streamdev-client/main.cpp

118 lines
2.8 KiB
C++
Raw Normal View History

2025-02-15 07:30:59 +01:00
#include <iostream>
#include <curl/curl.h>
#include <vlc/vlc.h>
#include <stdio.h>
#include <stdlib.h>
#include <QApplication>
#include <QMainWindow>
#include <QFrame>
#include <QLabel>
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();
}