Phonon - BufferingState event fehlt
Verfasst: 19. Mai 2010 19:39
Hallo Zusammen,
ich habe einen Apache, der per php eine Webseite generiert. Alle 5 Sekunden wird mit
ganz primitiv die Seite im Webbrowser refreshed.
Meine Qt-Applikation benutzt ein QWebView um die Seite anzuzeigen.
Die Seite enthält links auf Audiodateien, die keine konstante Größe haben, sondern anwachsen.
Mit einem Klick auf einen link wähle ich die Audiodatei aus und spiele sie ab. Wenn jetzt der Player schneller abspielt, als die Daten erzeugt werden und ich meine "erzeugt" und nicht "übertragen", dann kommt kein BufferingState. Während ich hier so die Frage formuliere, geht mir auf, dass der BufferingState wohl nur kommen kann, wenn der Player noch Daten erwartet. Er weiß also beim Start schon, wieviel bytes er bekommt und wenn mangels Bandbreite im Netz die Daten zu langsam kommen, dann geht er wohl in den BufferingState.
Aber wie kann ich ihm beibringen, das er wenn er seinen Buffer abgespielt hat, nochmal nachschaut, ob die Datei mittlerweile größer geworden ist.
Oder mache ich nur einen Fehler beim Connect der events? :
Gruß
Jürgen
P.S.: Auf echtes LiveStreaming mit DarwinServer oder live555 o.a und RTP und RTSP möchte ich, wenn möglich, erstmal verzichten.
ich habe einen Apache, der per php eine Webseite generiert. Alle 5 Sekunden wird mit
Code: Alles auswählen
<meta http-equiv="refresh" content="5">Meine Qt-Applikation benutzt ein QWebView um die Seite anzuzeigen.
Die Seite enthält links auf Audiodateien, die keine konstante Größe haben, sondern anwachsen.
Mit einem Klick auf einen link wähle ich die Audiodatei aus und spiele sie ab. Wenn jetzt der Player schneller abspielt, als die Daten erzeugt werden und ich meine "erzeugt" und nicht "übertragen", dann kommt kein BufferingState. Während ich hier so die Frage formuliere, geht mir auf, dass der BufferingState wohl nur kommen kann, wenn der Player noch Daten erwartet. Er weiß also beim Start schon, wieviel bytes er bekommt und wenn mangels Bandbreite im Netz die Daten zu langsam kommen, dann geht er wohl in den BufferingState.
Aber wie kann ich ihm beibringen, das er wenn er seinen Buffer abgespielt hat, nochmal nachschaut, ob die Datei mittlerweile größer geworden ist.
Oder mache ich nur einen Fehler beim Connect der events? :
Code: Alles auswählen
mediaObj = Phonon::createPlayer(Phonon::MusicCategory)
;
ui->progressBar->setRange(0, 100); // this is the default
connect(mediaObj, SIGNAL(bufferStatus(int)), ui->progressBar, SLOT(setValue(int)));
connect(ui->pushPlay, SIGNAL(clicked()), mediaObj, SLOT(play()));
connect(ui->pushPause, SIGNAL(clicked()), mediaObj, SLOT(pause()) );
connect(ui->pushStop, SIGNAL(clicked()), mediaObj, SLOT(stop()));
connect(mediaObj, SIGNAL(tick(qint64)), this, SLOT(tick(qint64)));
connect(mediaObj, SIGNAL(stateChanged(Phonon::State,Phonon::State)),
this, SLOT(stateChanged(Phonon::State,Phonon::State)));Jürgen
P.S.: Auf echtes LiveStreaming mit DarwinServer oder live555 o.a und RTP und RTSP möchte ich, wenn möglich, erstmal verzichten.