Jump to content

Multi-PiP Projekt


quad-split

Recommended Posts

Einige haben sicher schon mein Beitrag zum Multi-PiP in "Vorschläge & Ideen" gelesen.

Ich habe mir ein HTPC zusammen gebaut, mit dem Ziel möglichst viele PiP-Fenster zu öffnen. Zur Zeit habe ich nur einen 4-fach-Tuner (DVB-C) eingebaut.

Erstes Ziel soll ein 9er Bild (3x3), später ein 16er Bild (4x4) sein.

Ich habe ein AMD FX-8370 8-Core Prozessor und benutze Windows 10.

 

Bei einem Leistungsvergleich habe ich 4 freiempfangbare öffentlich-rechtliche Sender gleichzeitig (ARD, ZDF, arte und 3Sat) in HD (720p) mit verschiedenen Programmen angezeigt und im Task-Manager die Prozessor-Verwendung in % angeschaut. (Die Programme wurden jeweils 4 mal parallel mit einem Sender laufen gelassen):

 

DVBViewer Pro/GE            -->  10-13% Prozessor-Last

WinTV8                              -->  10-13%

DVBDream                         -->  31-34%

VLC-Player mit m3u-Datei -->  34-35%

tinyplayer mit m3u-Datei    -->  50-55% Prozessor-Last

 

Wie man sieht belastet der DVBViewer und WinTV8 den Prozessor an wenigsten, DVBDream und der VLC-Player deutlich mehr. Der tinyPlayer, ein kleiner Player, den man mehrmals aus einer exe-Datei starten kann, braucht mit Abstand am meisten Leistung. Der freie tinyPlayer hat tolle Funktionen, z.B. kann man die Größe des Fensters stufenlos mit dem Mausrad verstellen.

Der DVBViewer ist also wiedermal die beste Wahl, da WinTV8 keine Plugins zur Entschlüsselung zuläst und nur für Hauppauge-Tuner ist.

Das Problem ist, dass TV-Tuner-Software ca. 8-10 Sekunden zum starten braucht, was für ein Erststart in Ordnung, aber für ein Multi-PiP-Player zu lange ist.

 

Ich bräuchte also eine Mini-DVBViewer, der nur das nötigste lädt, was man für ein PiP-Fenster braucht, um die Startzeit wesentlich zu verkürzen.

 

Wer mir helfen will ist herzlich eingeladen. Für jeden hilfreichen Kommentar oder Tipp bin ich dankbar.

 

Gruß

quad-split

Link to comment

Spricht etwas dagegen, den DVBViewer einfach gestartet zu lassen? Man kann einstellen, dass bei minimiertem Fenster Audio/Video deaktiviert und beim vergrößern wieder aktiviert wird.

Link to comment

Wenn du einen DVBViewer dafür nutzt dann GE da du da pro Instanz zwei Fenster hat das Haupt Bild und BiB als extra Fenster (beim DVBViewer Pro liegt das innerhalb vom Hauptbild).

 

Sonst würde ich ja immer noch TransEdit nehmen. Die Sender die du zur Auswahl haben willst aus der DVBViewer Senderliste als .ini exportieren oder im TransEdit Suchlauf so speichern. Die .ini als Kommentarzeilen Argument übergeben oder auf TransEdit ziehen. Dann öffnet sich deren Inhalt in einem Suchlauf Ergebnis fester und man kann die BiB fester per doppelklick starten. Und die sollten sich glaube ich ihre Position auch merken.

 

Sonst bei anderen Playern eventuell gucken welche Codecs die Nutzen. VLC hat die fest eingebaut aber andere Player die auf DirectShow aufsetzen kannst du eventuell auf den LAV Filter umstellen der meist im DVBViewer genutzt wird.

Link to comment

@GruberMa

Danke für den Tipp mit dem Minimieren. Ich wußte nicht, dass man das so einstellen kann, dass die Decodedierung eingestellt wird und beim öfnnen wieder gestartet wird.

 

@Tjod

Ich würde gerne was neues beginnen und selbst programmieren. Ich habe schon mit dem DVBViewer und AutoIT3 versucht, aber das ist nicht das Wahre.

Ich wollte von Null beginnen und nicht per Script an DVBViewer rumdocktern. Mit VisualBasic.Net wollte ich ein eigenes Programm schreiben.

Den TBSViewer habe ich runtergeladen und das SDK dazu, den DigitalDevice-Player, den tinyplayer und den Quellcode dazu und verschiede IDEs für verschiedene Programmiersprachen.

 

Ich wollte meine eigene Software für mein HTPC schreiben, um alles so anzupassen wie ich es will. Vor gut 20 Jahren haben wir in der Schule mit TurboPascal6.0 programmiert. Früher wollte ich mal Java lernen haben das aber abgebrochen. Vor ein paar Jahren habe ich mit Python angefangen, um vielleicht für Enigma2 Plugins zu schreiben, aber das läuft auf Linux, das ist mir zu kompliziert, so ein Freak bin ich nicht. 

Windows ist mir da lieber und nur mit einem Windows-PC läßt sich die neuste Hardware auch ausnutzen.

 

Lange Rede, kurzer Sinn: Könnt ihr mir helfen den Einstieg zu finden.

 

Gruß

quad-split 

 

Link to comment

So ganz ist mir nicht klar was du machen willst. Einen eigenen Sat>IP Player programmieren der deinen Wünschen entspricht?

Es ist utopisch zu glauben sowas wäre mal eben schnell gemacht.

Dazu müsstest du dir neben der eigentlichen Programmierung fortgeschrittene Kenntnisse über Directshow, DVB, Sat>IP uvm. aneigenen.

Mit Skriptsprachen wie Autoit kannst du das gleich vergessen, damit wäre nur eine Steuerung diverser externer Anwendungen möglich.

 

 

Edited by nuts
Link to comment

Also erst mal musst du bei DirectShow dir einen guten überblicke verschaffen.

Hier mal ein paar Links die dir eventuell einen kleinen ersten Eindruck verschaffen was auf dich zu kommt.

http://www.DVBViewer.com/griga/DirectShow.html

https://msdn.microsoft.com/de-de/library/windows/desktop/dd375454(v=vs.85).aspx

https://msdn.microsoft.com/de-de/library/windows/desktop/dd375468(v=vs.85).aspx

https://github.com/mpc-hc/mpc-hc

https://code.msdn.microsoft.com/windowsapps/Classic-Video-Player-de838b19

wenn du das als einen RS Client betreiben willst kannst du dir Themen wie DVB und Sat>IP zwar sparen.

Aber mehrere parallele Codec aufrufe können auch zu Problemen führen.

 

Das ist sicher nichts was ohne Vorkommnisse in dem Bereich und guten Programmierkenntnissen (in einer dafür geeigneten Sprache) in 2-3 Wochenenden zu erledigen ist.

 

Und wenn es dir um die Prozessorlast geht willst du wahrscheinlich EVR als Video Renderer Verwenden da damit Hardware Beschleunigung geht. Aber damit ist dann auch recht Sicher nach 1-4 Streams Schluss weil deine Grafikkarte nicht mehr gleichzeitig unterstützt.

 

Wenn du Glück hast findest du irgend ein kleineres Open Source Player Projekt in einer Programmiertechnische. Das du nach mehreren Stunden Einarbeitung anfangen kamst an deine Bedürfnisse anzupassen.

Link to comment

Also ich will das Rad nicht ganz neu erfinden.

 

Wie gesagt, der DVBViewer ist die beste TV-Software, die ich gefunden habe. Darin stecken über 10 Jahre Entwicklung.

 

Wenn ich ein 9er Bild (3x3) möchte, dann muß ich den GE Viewer 9 mal in verschiedene Verzeichnisse installieren. Bei jedem der 9 Starts wird das EPG geladen, die Favourtenliste und und und, was ich nicht brauche. Die graphischen Einblendungen und Menüs brauche ich nicht jedesmal.

 

Von Null anfangen war von mir falsch ausgedrückt. Den RS und den DVBViewer möchte ich schon verwenden. Doch für die PiP-Bilder sollte es ein Mini-Player sein.

Wenn ich 9 PiP-Bilder habe, will ich auswählen können, bei welchem ich den Ton einschalte oder den Kanal wechsle.

 

Der DVBViewer ist doch in C++ und in Delphi programmiert. Ich bräuche die C++ Anwendung, die TVengine. Das Delphi Programm möchte ich durch eine andere Programmiersprache ersetzen und neu machen.

 

Machmal sagen Bilder mehr als tausend Worte. Hier ein Video (besonders ab Minute 10) von dem Octagon-Receiver, den ich mir damals gekauft habe.

Leider ist die Hardware etwas zu schwach und ein Twin-Tuner zu wenig.

https://www.youtube.com/watch?v=GvPpJffDuNo

 

P.S.; @Tjod: Danke für die vielen Links

 

Gruß

quad-split

Link to comment

Der DVBViewer selber nutzt keinerlei C++ (nur ein paar API .dll für TV Karten Treiber nutzen das) sondern Delphi und wohl an einigen Zeitkritischen Stellen Assembler. Und an den DVBViewer Quellcode wirst du wohl auch nicht heran kommen. Der ist nicht Open Source uns so große Teile das du was wirklich funktionierendes hast werden die Entwickler nicht so ohne weiteres veröffentlichen.

Und alleine um da Teile die du nicht brauchst entfernen zu können müsstest du ein paar zehntausend Zeilen Delphi Code lesen und verstehen was die genau machen um zu wisen was du wie ändern musst um was zu entfernen.

 

Das heißt da bist du recht sicher mit dem neu Programmieren eines kleinen Streamin Clients schneller als das zu verstehen.

 

Du kannst natürlich auf dem RS oder DVBViewer aufsetzen. Um dich nicht selber mit der Kommunikation mit den TV Karten auseinander setzen zu müssen. Beim RS über die API

http://en.DVBViewer.tv/wiki/Recording_Service_web_API oder beim DVBViewer als ein richtiges Plugin (wobei das wohl mit anderen Sprachen als Delphi manchmal auch nicht so einfach ist).

 

Das heißt ich würde an deiner stelle http://127.0.0.1:8089/api/channels.m3u oder http://127.0.0.1:8089/api/getchannelsxml.html?logo=1&upnp=1&subchannels=1 als Basis nehmen.

Und erst mal mit GraphStudioNext https://github.com/cplussharp/graph-studio-next oder so eine Funktionierende wiedergab kette mit LAV Filter als Codec und Splitter zusammenbauen.

  • Like 1
Link to comment

Danke euch beiden für die Hilfe, Mühe und Tipps!

 

Jetzt habe ich erstmal genug zu tun, zu lesen und auszuprobieren.

 

Danke!

 

quad-split

Link to comment

Ich habe den MediaPlayerClassic-HC getestet und Probleme damit gehabt.

Aber ich habe eine Modifikation des MPC-HC(Home Cinema) den MPC-BE(Black Edition) gefunden.

http://www.chip.de/downloads/Media-Player-Classic-BE-64-Bit_95304760.html

 

Damit habe ich die m3u-Datei vom RS zum laufen bekommen.

Ich denke der MPC ist Ideal für mein Multi-PiP Projekt:

- man kann ihn ganz einfach in das rahmenlosen Design wechseln

- für die Komandoline gibt es viele Startoptionen

- jedem Befehl kann man eine Taste zuorden und hat eine ID-Nummer

 

Problem1: Entschlüsselung von PayTV

Problem2: Bei m3u-Dateien gibt es keine Nummerierung (z.B. Programmnummer 25 starten?)

 

@ Tjod: Bei mir sieht die IP zum RS im MPC-BE so aus:

http://localhost:7522/upnp/channelstream/3431747430938192732|Das Erste HD (deu).ts

 

So jetzt muß ich nur noch VisualBasic.Net lernen und dann kann es los gehen.

 

gruß

quad-split

Edited by quad-split
Link to comment

zu 2) das ist die ChannelID damit kannst du sicher immer den gewünschten Sender erreichen bei Sender nummern ändert sich das ja bei jeder kleineren gerundete in der Senderliste. Siehe api/channels.m3u/getchannelsxml.html eventuell kanst du die auch noch durch die Sendenummer manuell ersetzen aber das würde ich nicht empfehlen.

Link to comment

Zu 2) Für dein Projekt würde ich eh eine eigene "Senderverwaltung" empfehlen. 

Visual Baisc musst du dafür eigentlich nicht lernen, zumal MPC-HC imho in C/C++ geschrieben ist.

 

Link to comment
  • 2 weeks later...

Hallo!

 

Ich habe eine sehr interessante Seite gefunden.

http://www.live555.com/liveMedia/

 

Der MPC-Player startet zwar sehr schnell, braucht aber sehr lange bis der Stream startet. Das liegt daran, dass er nur HTTP-Stream verarbeiten kann und keine RTSP-Streams. Einen eigenen Graph zu bauen ist mir zu kompliziert, aber mit der obigen Adresse, glaube ich, habe einen Mittelweg gefunden.

Das ist ein OpenSource-Projekt, dass den C++ Code für einen RTSP-Anwendung zur Verfügung stellt, um ihn eine Streaming-Applikation einzubinden.

Dafür gibt es sogenannte "testProgs".

 

Bei "How to configure and build the code on Windows" seht folgender Path  "c:\Program Files\DevStudio\Vc"

Weis jemand zu was für einem Programm der gehört?

 

Gruß

quad-split

 

Link to comment

Da steht doch dass sich die Beschreibung auf Microsoft Visual Studio (Version 5) bezieht. Und ab VC++ 2003 musst du das ganze wohl etwas anpassen weil es nicht ganz darauf ausgelegt ist. Wahrscheinlich musst du noch etwas weiter suchen was du alles anpassen musst wenn du nicht viel Erfahrung hast und eine aktuellere VS Version nutzen willst.

Hier mal ein Link über den ich bei kurzen um gucken gestoßen bin:

https://stackoverflow.com/questions/4745619/use-mak-files-on-visual-studio-2010

 

Hast du überhaupt mal versucht c:\Program Files\DevStudio\Vc bei Google eingegeben? Da siehst du schneien dass da bei alten VS Versionen Daten davon abgelegt wurden.

Wenn eine so kleine Recherche dir schon zu viel Aufwand ist glaube ich nicht dass das was wird.

 

Und bei der Start/Umschalte Geschwindigkeit spielen viele Sachen mit rein. Der DVBViewer ist in der Hinsicht sehr Optimiert vor allem was den Sendewechsel an geht. Also erwarte von einer anderen Lösung nicht das es genauso schnell geht. Es geht unter anderem darum alle Puffer so klein wie möglich zu halten. Aber das arbeiten mit größeren Puffern ist deutlich einfacher. Und es ist auch einfach einen Graph und die Verbindung zum Server bei einem Sendewechsel ab und wieder neu auf zu bauen. Aber wenn es um die Geschwindigkeit geht ist es besser die aufrecht zu erhalten. Aber das geht nicht immer sondern nur in manchen fällen. Also man muss da auf viel mehr achten. Soll heißen einfach und nicht optimiert ist sicher langsamer aber für den Anfang der bessere weg. Als zu versuchen gleich alles auf einmal zu haben.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...