Hallo,
ich habe ein Mediaplayer Plugin geschrieben das über das Softhddevice ausgibt. Ziel war einfach, klein, praktisch. Mediaplayer ist etwas hoch gegriffen da es momentan nur MP3's händeln kann. Ihr findet es in meinem git.
Have fun!
Gruss zille
Hallo,
ich habe ein Mediaplayer Plugin geschrieben das über das Softhddevice ausgibt. Ziel war einfach, klein, praktisch. Mediaplayer ist etwas hoch gegriffen da es momentan nur MP3's händeln kann. Ihr findet es in meinem git.
Have fun!
Gruss zille
beim
git clone https://github.com/zillevdr/vdr-mediaplayer.git
kommt eine Abfrage nach Username und Passwort. Was gebe ich da vor?
die Angabe git clone https://github.com/zillevdr/vdr-mediaplayer.git im README ist falsch.
git clone https://github.com/zillevdr/vdr-plugin-mediaplayer.git funzt.
player.cpp: In member function ‘virtual void cMediaPlayer::Action()’:
player.cpp:275:21: error: ‘rand’ is not a member of ‘std’
CurrentFile = std::rand() % (LastFile + 1);
^
player.cpp:275:21: note: suggested alternative:
In file included from /usr/local/include/vdr/config.h:15:0,
from /usr/local/include/vdr/channels.h:13,
from /usr/local/include/vdr/device.h:13,
from /usr/local/include/vdr/player.h:13,
from player.cpp:28:
/usr/include/stdlib.h:374:12: note: ‘rand’
extern int rand (void) __THROW;
^
: recipe for target 'player.o' failed
make: *** [player.o] Error 1
Alles anzeigen
ist allerdings noch vdr 2.2.0
die Angabe git clone https://github.com/zillevdr/vdr-mediaplayer.git im README ist falsch.
git clone https://github.com/zillevdr/vdr-plugin-mediaplayer.git funzt.
Das ist korrigiert.
layer.cpp:275:21: error: ‘rand’ is not a member of ‘std’
Da reagieren die Compiler wieder unterschiedlich. Ich habe den header stdlib.h eingefügt. Bitte noch einmal testen.
Gruss zille.
What is the same plugin for?
Now it's only for mp3. In the future it support audio and video.
Regards zille.
#include <stdlib.h> funzt nicht. Aber #include <cstdlib> ,wie von lnj vorgeschlagen, kompiliert.
Das Plugin spielt aber nichts ab (vdr 2.2.0 mit altem softhddevice)
Jun 24 11:11:46 ubuntuvdr2 vdr: [2041] [softhddev]SetPlayMode: 0
Jun 24 11:11:46 ubuntuvdr2 vdr: [2041] [softhddev]SetVideoDisplayFormat: 1
Jun 24 11:11:46 ubuntuvdr2 vdr: [2041] [softhddev]GetSpuDecoder:
Jun 24 11:11:46 ubuntuvdr2 vdr: [2041] [softhddev]SetPlayMode: 2
Jun 24 11:11:46 ubuntuvdr2 vdr: [2041] [softhddev] play mode external audio
Jun 24 11:11:46 ubuntuvdr2 vdr: audio/alsa: using device 'hw:1,7'
Jun 24 11:11:46 ubuntuvdr2 vdr: audio/alsa: set params error: Das Argument ist ungültig
Jun 24 11:11:46 ubuntuvdr2 vdr: audio: can't set channels 0 sample-rate 0Hz
Jun 24 11:11:46 ubuntuvdr2 vdr: [3125] [softhddev]Play:
Jun 24 11:11:56 ubuntuvdr2 vdr: [3075] animator thread thread ended (pid=2041, tid=3075)
Jun 24 11:11:56 ubuntuvdr2 vdr: [2041] [softhddev]SetPlayMode: 0
Jun 24 11:11:56 ubuntuvdr2 vdr: audio: 'alsa' output module used
Jun 24 11:11:56 ubuntuvdr2 vdr: audio/alsa: supports pause: yes
Jun 24 11:11:58 ubuntuvdr2 vdr: audio: 44100Hz supports 2 2 4 4 6 6 8 8 channels
Jun 24 11:11:58 ubuntuvdr2 vdr: audio: 48000Hz supports 2 2 4 4 6 6 8 8 channels
Jun 24 11:11:58 ubuntuvdr2 vdr: audio: 192000Hz supports 2 2 4 4 6 6 8 8 channels
Jun 24 11:11:58 ubuntuvdr2 vdr: [2041] [softhddev]SetVideoDisplayFormat: 1
Jun 24 11:11:58 ubuntuvdr2 vdr: [2041] [softhddev]GetSpuDecoder:
Jun 24 11:11:58 ubuntuvdr2 vdr: [2041] switching to channel 1 (Das Erste HD)
Alles anzeigen
Ich wollte es dann auf dem anderen VDR mit Bionic und vdr-2.4.0 (mit vdr-plugin-vaapidevice-vpp_support) probieren, dort kommt eine Compilerwarnung:
' -g3 -W -Wall -Wextra -Winit-self -Werror=overloaded-virtual -c -o menu.o menu.cpp
menu.cpp: In member function ‘virtual eOSState cMediaPlayerMenu::ProcessKey(eKeys)’:
menu.cpp:255:14: warning: this statement may fall through [-Wimplicit-fallthrough=]
} else if (pControl->MenuOpen == 1) {
^~
menu.cpp:259:5: note: here
case kPlay:
^~~~
aber es läuft durch. Dort passiert nach der Titelauswahl gar nichts, auch nichts im Log, aber vdr hängt und geht auch nach mehrfachem Drücken der Zurück-Taste nicht auf den Kanal zurück. Ich muss erst über das Menü auf einen anderen Kanal und zurück wechseln.
#include <stdlib.h> funzt nicht. Aber #include <cstdlib> ,wie von lnj vorgeschlagen, kompiliert.
Dann werde ich das ändern.
Jun 24 11:11:46 ubuntuvdr2 vdr: audio: can't set channels 0 sample-rate 0Hz
Probier mal "-w alsa-no-close-open" beim starten von softhddevice.
Zu vaapidevice kann ich nix sagen. Das habe ich nicht im Einsatz.
Gruss zille
Dann werde ich das ändern.
Probier mal "-w alsa-no-close-open" beim starten von softhddevice.
bringt auch nichts:
Jun 24 13:55:06 ubuntuvdr2 vdr: [2031] [softhddev]SetPlayMode: 0
Jun 24 13:55:06 ubuntuvdr2 vdr: [2031] [softhddev]SetVideoDisplayFormat: 1
Jun 24 13:55:06 ubuntuvdr2 vdr: [2031] [softhddev]GetSpuDecoder:
Jun 24 13:55:06 ubuntuvdr2 vdr: [2031] [softhddev]SetPlayMode: 2
Jun 24 13:55:06 ubuntuvdr2 vdr: [2031] [softhddev] play mode external audio
Jun 24 13:55:06 ubuntuvdr2 vdr: video: decoder buffer empty, duping frame (274/3234) 0 v-buf
Jun 24 13:55:06 ubuntuvdr2 vdr: video: --:--:--.--- +0 0 0/\ms 0-1+4 v-buf
Jun 24 13:55:06 ubuntuvdr2 vdr: audio/alsa: start delay 400ms
Jun 24 13:55:06 ubuntuvdr2 vdr: [3058] [softhddev]Play:
Jun 24 13:55:16 ubuntuvdr2 vdr: [3025] animator thread thread ended (pid=2031, tid=3025)
Jun 24 13:55:16 ubuntuvdr2 vdr: [2031] [softhddev]SetPlayMode: 0
Jun 24 13:55:16 ubuntuvdr2 vdr: audio: 'alsa' output module used
Jun 24 13:55:16 ubuntuvdr2 vdr: audio/alsa: supports pause: yes
Jun 24 13:55:17 ubuntuvdr2 vdr: audio: 44100Hz supports 2 2 4 4 6 6 8 8 channels
Jun 24 13:55:17 ubuntuvdr2 vdr: audio: 48000Hz supports 2 2 4 4 6 6 8 8 channels
Jun 24 13:55:17 ubuntuvdr2 vdr: audio: 192000Hz supports 2 2 4 4 6 6 8 8 channels
Jun 24 13:55:17 ubuntuvdr2 vdr: [2031] [softhddev]SetVideoDisplayFormat: 1
Jun 24 13:55:17 ubuntuvdr2 vdr: [2031] [softhddev]GetSpuDecoder:
Jun 24 13:55:17 ubuntuvdr2 vdr: [2031] switching to channel 7 (RTL II)
Alles anzeigen
Hi,
the compile error could be workarounded by a "/* FALLTHRU */" comment in the case for gcc 7.1 and greater.
CU
9000h
Jun 24 13:55:06 ubuntuvdr2 vdr: [3058] [softhddev]Play:
... mmh. Das PES Packet kommt im softhddevice an. Danach ist nix mehr zu sehen. Würdest Du das softhddevice mal mit DEBUG compilieren und testen? Vielleicht sieht man dann mehr.
Gruss zille
Würdest Du das softhddevice mal mit DEBUG compilieren und testen?
wie mache ich das? Nur die Raute vor g0 -ggdb im Makefile entfernen?
beim Aufruf des mp3-files kommt nur eine einzige Zeile:
[mp3 @ 0x562dafca7c00] Estimating duration from bitrate, this may be inaccurate
beim Aufruf des mp3-files kommt nur eine einzige Zeile:
Hi Dr. Seltsam,
das ist sehr seltsam! Mit DEBUG soll es nur eine Zeile geben und ohne waren es mehr? Deine Version vom softhddevice ist schon mysteriös!
Das war nur die Debug-Ausgabe auf der Konsole. Den Auszug aus dem sylog hatte ich ja schon geposted.
Ich muss mich jetzt erstmal ausklinken, weil mein VDR im Produktivbetrieb gebraucht wird.
Im syslog sollten jetzt mehr Ausgaben sein.
ich habe mal ein komplettes Log vom Beginn des Abspielens eines mp3 bis zur Rückkehr auf Live-TV (was nicht von selbst sondern nur durch erneute Anwahl eines Kanals funktioniert) beigefügt.
Für weitere Tests fehlt mir leider die Zeit, aber ich wollte dieses Log zumindest noch liefern
Zitatcodec/audio: format change s16p 44100Hz *2 channels AC-3 E-AC-3 pass-through
Da kann ich jetzt nur vermuten das Du pass-through nutzt. Da fehlen mir die Erfahrungen. Aber mir fällt auf das "PCM pass-trough" nicht gesetzt ist. Da wird softhddevice damit nicht umgehen können.
Um die Funktion des Mediaplayers zu testen kannst Du mal probieren eine normale Soundkarte zu benutzen.
Gruss zille
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!