Jump to content

DVBViewer noch nicht optimal für MKVVideos


ghostadmin

Recommended Posts

Da ich die Skystar TS35 Fernbedienung nicht dazu bewegen kann auch andere Programme als DVBViewer zu steuern, würde ich gerne DVBViewer als MKV Player verwenden. Unter MPC klappt dies auch und ich habe in DVBViewer ffdshow eingestellt sowie den Haali Media Splitter installiert.

 

Nun meine Probleme:

 

1) Beim Playback zeigt die Anzeige z.b. 1920x800 25fps. Ich weiß nicht ob die Filme wirklich mit 25fps abgespielt werden oder nur die Anzeige 25fps anzeigt. Wenn ich während dem Video bei ffdshow auf Info gehe, dann steht dort bei Input 23.976fps.

Wie das bei SAT ist, weiß ich auch nicht. Wird dort auch erstmal alles auf 25fps gestellt?

2) Ich weiß nicht genau ob DVBViewer bei mir den DirectVobsub Filter installiert hat aber er wird nicht geladen d.h. Untertitel werden nicht angezeigt. Vielleicht weil ich kein VMR9 explizit für Videos einstellen kann (der Filter geht nicht mit Overlay)? Getrennte Einstellung wäre sinnvoll da ich SAT in Overlay ansehen möchte.

3) Stelle ich die SAT Ausgabe auf VMR9 werden die Videos in einer Art 4:3 Bildverhältnis abgespielt, aber immer noch keine Untertitel sichtbar.

4) Manche MKV Videos werden nicht gestartet, man sieht den ersten Frame und das Video stoppt dann. Die CPU zeigt 0% an. In MPC klappen die Videos aber einwandfrei.

5) Kann man es abschalten, das sobald DVBViewer gestartet wird, nicht automatisch der letzte SAT Sender gestartet wird sondern es leer bleibt? Sobald ich ein Video nach dem Start starten möchte, muss ich immer warten bis das SAT Fenster offen ist und das dauert ...

Link to comment

MKVs stammen doch fast ausschliesslich aus illegalen downloads, oder? ;) Da sind dann anscheinend auch solche bei, die fehlerhaft sind. Die daraus resultierenden problemmeldungen verstopfen dann die boards ;) MKV hat mit DVB wenig zu tun, trotzdem soll der DVBViewer solche files aber abspielen können :angry:

Link to comment

Hi,

 

zu Punkt 2 kann ich evt. etwas zur Lösung beitragen:

 

Der MediaPlayerClassic kann Untertitel nur darstellen, wenn man VMR7 renderless, VMR9 renderless oder den Haali Renderer nutzt. Bei Nutzung des Overlay Renderers oder eines VMR im windowed mode ( welchen der DVBViewer afaik nutzt ) ist die Wiedergabe von Untertiteln zumindestens beim MPC nicht möglich. Daher ist zu vermuten, daß es aus diesem Grund beim DVBViewer nicht funktionieren kann.

 

Ansonsten stimme ich Derrick zu: Es gibt zwar relativ viele MKV Files, die aus illegalen Downloads stammen. Es ist im HD Bereich aber generell üblich geworden, Backups von HD DVDs und Blurays die man besitzt, im Matroska Format zu erstellen oder HDTV Aufnahmen ins Matroska Format zu multiplexen. Der Vorteil gegenüber dem EVO-, dem TS- und dem M2TS-Containern liegt darin, daß Mastroska neben den Video- und Audio- und Untertitelpuren auch die Kapitel eines Filmes in einer einzigen Datei speichern kann. Hinzu kommt, daß Matroska ja ein Open Source unter LGPL ist und somit keine Lizenzprobleme bestehen. Daher sollte der DVBViewer, der ja vom schon länger auf dem Weg vom reinen DVB-Programm zum universellen Programm zur Wiedergabe von AV-Medien ist, das Matroskaformat auf jeden Fall unterstützen.

 

C.U. NanoBot

Edited by NanoBot
Link to comment

Aus oben genannten Gründen (NanoBot) habe ich alle meine DVDs und Blurays in MKVs mit X.264 umgewandelt. Nich illegal... ;)

 

Der DVBViewer ist bei mir, so wie bei vielen anderen, ein Mediacenter-Ersatz, der auch aufnehmen kann und nicht eine DVB-Software, die noch ein bisschen Multimedia kann. :angry:

Es wäre also, schön, wenn die Verantwortlichen sie der besseren MKV-Integration annehmen würden.

Insbesondere die Untertiteldarstellung in MKVs ist mir auch wichtig!

Link to comment

Untertitel sind in der Realisierung nicht so einfach. Erstmal dürfte das nur mit bestimmten Splittern funktionieren, die die Untertitel in MKV auch unterstützen (e.g. Haali), dann müsste man die Daten am Pin abgreifen, das Format kennen und die Daten entsprechend parsen und schlussendlich natürlich die Untertitel sychnchron über den Renderer darstellen. Ist also nicht so einfach und das allgemeine Interesse ist nicht allzu groß.

Link to comment

Ich habe auch sehr viele HD-DVDs ...

Wenn DVBViewer keinen richtigen Support für Videos bietet, dann kann ich ja gleich die GE Version benutzen.

 

Nun, ich habe mal die Subtitles rausgemuxt und siehe da, das Video wird abgespielt. Also haben die 2 Dinge direkt miteinander zu tun. An der Audiospur liegt es auch nicht, habe ich geprüft.

 

Ob DVBViewer nun VMR9 renderless oder windowed benutzt, weiß ich leider nicht. Man kann den Modus ja leider nicht mal einstellen oder ist der nun der gleiche wie bei SAT?

Auf jeden Fall gibts ja noch so Filter wie Directvobsub aber der wird ja nicht geladen! Der funktioniert nämlich selbst bei Overlay.

 

Ausserdem ist mir aufgefallen das bei Videos mit Untertitel ein "Null Renderer" Filter aktiv ist. Wahrscheinlich wegen den Untertiteln. Vielleicht wird Directvobsub nur von DVBViewer geblockt. Wenn ich Directvobsub entferne, gehen die Videos allerdings auch nicht.

Edited by ghostadmin
Link to comment
Aus oben genannten Gründen (NanoBot) habe ich alle meine DVDs und Blurays in MKVs mit X.264 umgewandelt. Nich illegal... ;)
..das ist ja fast wie die jungfrau und das kind. Ich dachte immer, vor der wandlung steht das rippen :angry:
Link to comment
..das ist ja fast wie die jungfrau und das kind. Ich dachte immer, vor der wandlung steht das rippen

 

Stänkerst du immer so rum du Nase....Seit wann ist rippen illegal. ;):angry:

Link to comment

Hi wulf16,

 

leider hat Derrick vollkommen recht. Aufgrund massiver Lobbyarbeit der Contentindustrie ( man könnte natürlich auch ganz undiplomatisch mutmaßen, wieviel Schmiergelder damals an die politischen Entscheidungsträger geflossen sein könnten ), gibt es eine EU-Richtlinie die es verbietet, Sicherheitskopien seiner eigenen CDs, DVDs, HD DVDs und Blurays zu erstellen, sofern diese über einen "wirksamen" Kopierschutz verfügen. Auch das Herstellen, Importieren und Anbieten von Programmen, die diesem Zweck dienen, ist in der EU illegal. Das ist ja auch der Grund, weshalb eine sehr bekannte Firma, welche das Programm mit dem "Fuchs" herstellt, ihren Geschäftsitz in British Antigua hat, wo diese gesetzlichen Einschränkungen nicht gelten. Im Gegensatz dazu ist das Umgehen eines Kopierschutzes zur Anfertigung privater Kopien in den USA, wo das Urheberrecht ja eigentlich noch strenger ist als bei uns, unter Ausnutzung der "Fair Use" Klausel erlaubt.

 

In Deutschland ist die Gesetzesgrundlage der §108b UrhG:

 

http://dejure.org/gesetze/UrhG/108b.html

 

Wie man dort ersehen kann, wird man für eine Umgehung des Kopierschutzes, die ausschließlich privaten Zwecken dient, zwar nicht mit Strafe bedroht, aber es ist trotzdem verboten. Dies hat zur Folge, daß die Rechteinhaber an den betroffenen Werken denjenigen, der gegen das Verbot verstößt, zivilrechtlich auf Unterlassung und Schadensersatz in Anspruch nehmen kann. Desweiteren kann jede Person und Firma, welche Werbung für solche Programm seinen/ihren Webseiten duldet, als Störer in Haftung genommen werden.

 

In der Praxis ist das IMHO eine völlig schwachsinnige, unfaire und untaugliche Gesetzesregelung. Denn im privaten Bereich wird sich ohnehin niemand daran halten, und den "echten", gewerblichen Raubkopieren ist die Rechtslage sowieso egal. Aber Gesetz ist leider Gesetz, was zur Folge hat, daß vor kurzem jemand rechtskräftig kostenpflichtig abgemahnt wurde, weil er bei Ebay ein Programm zum Umgehen des Kopierschutzes angeboten hat.

 

Um das Thema im Bezug auf Matroska Dateien abzuschliessen gehen wir also in Zukunft doch einfach mal davon aus, daß die Nutzer dieses Boards ausschließlich Backups von eigenen Datenträgern erstellen, die keinen Kopierschutz besitzen. Denn dies ist auch unter der aktuellen Rechtslage immer noch erlaubt.

 

 

C.U. NanoBot

Link to comment
Ist also nicht so einfach und das allgemeine Interesse ist nicht allzu groß.

 

Du kannst das Interesse ruhig als groß einstufen. Die betreffenden MKVs die nicht starten werden im Windows Media Player korrekt gestartet und abgespielt. Ich kann mir gut vorstellen das der WMV im DVBViewer benutzt wird um Videos abzuspielen. Vielleicht ist es nötig eine neuere Version zu nutzen als die derzeitige oder es hapert an der korrekten Einbindung. Da ich beruflich mit Delphi zu tun habe, würde mich die Einbindung auch codetechnisch interessieren. Vielleicht kann ich ja eine Lösung anbieten.

Link to comment
Du kannst das Interesse ruhig als groß einstufen.

Herr Ober, bitte Zahlen!

 

Ich kann mir gut vorstellen das der WMV im DVBViewer benutzt wird um Videos abzuspielen.

Was benutzen wir? WMV??? Nur bei entsprechendem Content. Dass MKV als Containerformat WMV enthalten kann, wäre mir neu. Oder meinst du den WMP? Nein, den benutzen wir nicht. Ich habe den noch nicht mal installiert.

 

Der DVBViewer basiert im wesentlichen auf DirectShow, wie viele andere Mediaplayer (z.B. der Windows Media Player) auch.

 

Da ich beruflich mit Delphi zu tun habe, würde mich die Einbindung auch codetechnisch interessieren. Vielleicht kann ich ja eine Lösung anbieten.

Ja, das wäre nett. Die DirectShow9-Klassen und Interfaces (Übersetzung der C++ Headerdateien von MS) gibt es hier:

 

http://www.progdigy.com/?page_id=4

 

und weiterhin als schier unerschöpfliche Informationsquelle

 

http://msdn.microsoft.com/en-us/library/ms783351(VS.85).aspx

 

Falls es dir zu viel wird, reicht es vielleicht auch, wenn du mit GraphEdit/GraphStudio einen funktionierenden Filtergraph baust und hier dokumentierst. Der vom DVBViewer verwendete lässt sich mit "Connect to Remote Graph" inspizieren.

Link to comment

Wäre es nicht sinnvoller beim Abspielen von Videos auf bereits funktionierende Lösungen zurückzugreifen anstatt alles händisch selbst zu machen? Der WMP ist Bestandteil einer jeden Windows-Installation und lässt sich als ActiveX einbinden und steuern. Warum kompliziert wenn es auch einfach geht?

Link to comment

Eine geniale Idee! Da fragt man sich doch, wieso alle Mediaplayer von Rang und Namen - MPC, PowerDVD, Zoomplayer, BSPlayer, RadLight, DVBViewer usw. - es vorziehen, selbst mit dem DirectShow-API zu hantieren, anstatt einfach den WMP als ActiveX einzubinden. Irgendwie müssen die Programmierer ziemlich vernagelt sein.

Link to comment
Eine geniale Idee! Da fragt man sich doch, wieso alle Mediaplayer von Rang und Namen - MPC, PowerDVD, Zoomplayer, BSPlayer, RadLight, DVBViewer usw. - es vorziehen, selbst mit dem DirectShow-API zu hantieren, anstatt einfach den WMP als ActiveX einzubinden. Irgendwie müssen die Programmierer ziemlich vernagelt sein.

 

Muss ich diesen Quatsch wirklich kommentieren?

 

Die Hauptaufgabe vom DVBViewer ist sicherlich die Wiedergabe von DVB-Quellen, das funktioniert auch sehr gut, es hat sich aber mittlerweile zu einem vollwertigen Mediacenter entwickelt. Es sind also diverse Zusatzfunktionen hinzugekommen, wie auch das Abspielen von diversen Mediadateien. Leider gibt es aber mit der Wiedergabe dieser Dateien erhebliche Probleme. Man könnte sich selbst einen Gefallen tun und diese Probleme umgehen, indem man angebotene ActiveX nutzt, wie etwa vom Windows Mediaplayer, der nachweislich den höchsten Verbreitungsgrad hat. Man kann problemlos im DVBViewer prüfen ob ein WMP installiert ist oder nicht, wenn nicht, dann wird halt auf die händische Methode zurückgegriffen und man muss mit den Nachteilen leben. Dabei handelt es sich um eine schnelle und saubere Lösung um an das gewünschte Ziel zu kommen, denn die ganze Arbeit wird vom ActiveX abgenommen. Die Integration dürfte mit weniger Code und schneller von statten gehen, als wenn man selbst versucht, die Probleme die in den Dateien stecken, zu lösen.

 

Aber scheinbar müssen wir uns wohl damit zufrieden geben, daß es zwar eine Abspielmöglichkeit für Videos gibt, die aber leider nur einen kleinen Bruchteil der verfügbaren Mediendateien abspielen kann. Damit ist der DVBViewer dann doch kein vollwertiges Mediacenter wie man es sich erhofft hat.

Link to comment

..mit oder ohne activex spielt der wmp auch nur das, für das entsprechende directshow filter installiert sind. Oder hat m$ die bei dir alle default mitinstalliert? <_<

Link to comment

Ich habe ja auch nichts gegenteiliges behauptet. Es geht hier darum daß bestimmte Dateien, z.B. MKV mit Untertiteln nicht im DVBViewer abgespielt werden, von Untertiteln mal ganz zu schweigen. Der WMP ist jedoch in der Lage diese Dateien problemlos abzuspielen.

Link to comment

..ich habe keine MKVs und daher auch kein problem mit den untertiteln. Vobs werden jedenfalls mit ut. abgespielt. Der wmp ist imho keine alternative. Ich nehme allerdings auch lieber player wie powerdvd als den DVBViewer zum abspielen <_<

Link to comment

Deutschland ist mittlerweile auch im HD-Zeitalter angekommen. In MKVs werden HD-Filme gespeichert. Ich habe einen Full-HD-Beamer und möchte mir daher keine minderwertigen DVD-Quellen mehr antun. Von daher wäre es nicht schlecht, wenn auch der DVBViewer dieses Format unterstützen würde.

Link to comment
Es geht hier darum daß bestimmte Dateien, z.B. MKV mit Untertiteln nicht im DVBViewer abgespielt werden, von Untertiteln mal ganz zu schweigen. Der WMP ist jedoch in der Lage diese Dateien problemlos abzuspielen.

Dann finde mit GraphEdit/GraphStudio heraus, wie ein Filtergraph aussehen muss, der das realisiert, woran es im Filtergraph des DVBViewers mangelt, und gib es hier bekannt. Du hast die Dateien, wir nicht. Du bist daran interessiert, dass es im DVBViewer funktioniert, also tu was. Die aktive Mitarbeit kompetenter Anwender erhöht die Chancen einer Realisierung im DVBViewer drastisch.

Link to comment

Bei MKV's mit 720p Auflösung gibt es unter Vista SP1 mit EVR bei mir das Problem, das die Videos anscheinend mit einem Seitenverhältnis von 2.35:1 abgespielt werden, obwohl sie im 16:9 Format vorliegen. Somit sind oben und unten schwarze Balken und das Video in der Mitte ist zusammengedrückt. Tritt leider mit jedem Dekoder aus, egal ob mit DXVA oder ohne, Media Player Classic spielt die Videos durch EVR ohne Probleme im richtigen Seitenverhältniss dar.

Ist das Problem bekannt? Gibt es schon irgendeine Lösung? Tritt übrigens auch auf, wenn man MP4 Dateien mit 720p abspielen möchte, ist also vermutlich nicht auf das MKV Format zurückzuführen.

Link to comment
Dann finde mit GraphEdit/GraphStudio heraus, wie ein Filtergraph aussehen muss, der das realisiert, woran es im Filtergraph des DVBViewers mangelt, und gib es hier bekannt. Du hast die Dateien, wir nicht. Du bist daran interessiert, dass es im DVBViewer funktioniert, also tu was. Die aktive Mitarbeit kompetenter Anwender erhöht die Chancen einer Realisierung im DVBViewer drastisch.

 

Was benötigst Du alles? Reicht Dir ein Screenshot von dem Graphen oder brauchst Du noch weitere Ausgaben?

Link to comment

Screenshot und Textdump wären ein guter Anfang.

 

Ich würde erst mal versuchen, so eine Datei (mit Untertitel) mit GraphStudio/GraphEdit rendern zu lassen (File -> Render Media File), um zu sehen, was dem DirectShow GraphBuilder dazu einfällt, und ob das wie gewünscht funktioniert. Ich nehme an, der WMP macht auch nicht viel anderes.

Link to comment

Sag Bescheid wenn Du noch brauchst. Rendern geht problemlos.

 

99ac8vqv.jpg

 

--------------------------------------------------

Filters

--------------------------------------------------

1. C:\mkv\subtitles.mkv

2. ffdshow Video Decoder

3. ffdshow Audio Decoder

4. Video Renderer

5. Default DirectSound Device

 

--------------------------------------------------

Connections

--------------------------------------------------

1. [C:\mkv\subtitles.mkv]/(Video) -> [ffdshow Video Decoder]/(In)

Major: MEDIATYPE_Video

Subtype: {31435641-0000-0010-8000-00AA00389B71}

bFixedSizeSamples: FALSE

bTemporalCompression: FALSE

lSampleSize: 1

cbFormat: 170

Format: FORMAT_MPEG2_VIDEO

VIDEOINFOHEADER2:

rcSource: (0,0,0,0)

rcTarget: (0,0,0,0)

dwBitRate: 0

dwBitErrorRate: 0

AvgTimePerFrame: 417083

dwInterlaceFlags: 0

dwCopyProtectFlags: 0

dwPictAspectRatioX: 1920

dwPictAspectRatioY: 1080

dwControlFlags: 0

BITMAPINFOHEADER:

biSize: 40

biWidth: 1920

biHeight: 1080

biPlanes: 1

biBitCount: 24

biCompression: 0x31637661

biSizeImage: 0

biXPelsPerMeter: 1

biYPelsPerMeter: 1

biClrUsed: 0

biClrImportant: 0

MPEG2VIDEOINFO:

dwStartTimeCode: 0

cbSequenceHeader: 38

dwProfile: 100

dwLevel: 51

Sequence Header:

00 1e 67 64 00 33 ac 34 e2 40 78 02 27 e5 ff c0

00 40 00 44 00 06 5d 3c 01 31 2d 02 3c 60 c6 26

00 04 68 ee bc b0

 

2. [C:\mkv\subtitles.mkv]/(Audio) -> [ffdshow Audio Decoder]/(In)

Major: MEDIATYPE_Audio

Subtype: {00002001-0000-0010-8000-00AA00389B71}

bFixedSizeSamples: FALSE

bTemporalCompression: FALSE

lSampleSize: 1

cbFormat: 18

Format: FORMAT_WaveFormatEx

WAVEFORMATEX:

wFormatTag: 0x2001 (8193)

nChannels: 6

nSamplesPerSec: 48000

nAvgBytesPerSec: 0

nBlockAlign: 0

wBitsPersample: 0

cbSize: 0

 

3. [C:\mkv\subtitles.mkv]/(Subtitle) -> [ffdshow Video Decoder]/(In Text)

Major: {E487EB08-6B26-4BE9-9DD3-993434D313FD}

Subtype: {87C0B230-03A8-4FDF-8010-B27A5848200D}

bFixedSizeSamples: FALSE

bTemporalCompression: FALSE

lSampleSize: 1

cbFormat: 520

Format: {A33D2F7D-96BC-4337-B23B-A8B9FBC295E9}

 

4. [ffdshow Video Decoder]/(Out) -> [Video Renderer]/(VMR Input0)

Major: MEDIATYPE_Video

Subtype: MEDIASUBTYPE_YV12

bFixedSizeSamples: TRUE

bTemporalCompression: FALSE

lSampleSize: 3110400

cbFormat: 112

Format: FORMAT_VIDEOINFO2

VIDEOINFOHEADER2:

rcSource: (0,0,1920,1080)

rcTarget: (0,0,1920,1080)

dwBitRate: 0

dwBitErrorRate: 0

AvgTimePerFrame: 417083

dwInterlaceFlags: 0

dwCopyProtectFlags: 0

dwPictAspectRatioX: 16

dwPictAspectRatioY: 9

dwControlFlags: 0

BITMAPINFOHEADER:

biSize: 40

biWidth: 1920

biHeight: 1080

biPlanes: 3

biBitCount: 12

biCompression: 0x32315659

biSizeImage: 3110400

biXPelsPerMeter: 0

biYPelsPerMeter: 0

biClrUsed: 0

biClrImportant: 0

 

5. [ffdshow Audio Decoder]/(Out) -> [Default DirectSound Device]/(Audio Input pin (rendered))

Major: MEDIATYPE_Audio

Subtype: MEDIASUBTYPE_PCM

bFixedSizeSamples: TRUE

bTemporalCompression: FALSE

lSampleSize: 1

cbFormat: 18

Format: FORMAT_WaveFormatEx

WAVEFORMATEX:

wFormatTag: 0x0001 (1)

nChannels: 2

nSamplesPerSec: 48000

nAvgBytesPerSec: 192000

nBlockAlign: 4

wBitsPersample: 16

cbSize: 0

 

 

--------------------------------------------------

Filters

--------------------------------------------------

1. C:\mkv\subtitles.mkv

2. ffdshow Video Decoder

3. ffdshow Audio Decoder

4. Video Renderer

5. Default DirectSound Device

 

--------------------------------------------------

Connections

--------------------------------------------------

1. [C:\mkv\subtitles.mkv]/(Video) -> [ffdshow Video Decoder]/(In)

Major: MEDIATYPE_Video

Subtype: {31435641-0000-0010-8000-00AA00389B71}

bFixedSizeSamples: FALSE

bTemporalCompression: FALSE

lSampleSize: 1

cbFormat: 170

Format: FORMAT_MPEG2_VIDEO

 

2. [C:\mkv\subtitles.mkv]/(Audio) -> [ffdshow Audio Decoder]/(In)

Major: MEDIATYPE_Audio

Subtype: {00002001-0000-0010-8000-00AA00389B71}

bFixedSizeSamples: FALSE

bTemporalCompression: FALSE

lSampleSize: 1

cbFormat: 18

Format: FORMAT_WaveFormatEx

 

3. [C:\mkv\subtitles.mkv]/(Subtitle) -> [ffdshow Video Decoder]/(In Text)

Major: {E487EB08-6B26-4BE9-9DD3-993434D313FD}

Subtype: {87C0B230-03A8-4FDF-8010-B27A5848200D}

bFixedSizeSamples: FALSE

bTemporalCompression: FALSE

lSampleSize: 1

cbFormat: 520

Format: {A33D2F7D-96BC-4337-B23B-A8B9FBC295E9}

 

4. [ffdshow Video Decoder]/(Out) -> [Video Renderer]/(VMR Input0)

Major: MEDIATYPE_Video

Subtype: MEDIASUBTYPE_YV12

bFixedSizeSamples: TRUE

bTemporalCompression: FALSE

lSampleSize: 3110400

cbFormat: 112

Format: FORMAT_VIDEOINFO2

 

5. [ffdshow Audio Decoder]/(Out) -> [Default DirectSound Device]/(Audio Input pin (rendered))

Major: MEDIATYPE_Audio

Subtype: MEDIASUBTYPE_PCM

bFixedSizeSamples: TRUE

bTemporalCompression: FALSE

lSampleSize: 1

cbFormat: 18

Format: FORMAT_WaveFormatEx

 

 

--------------------------------------------------

Filters

--------------------------------------------------

1. C:\mkv\subtitles.mkv

2. ffdshow Video Decoder

3. ffdshow Audio Decoder

4. Video Renderer

5. Default DirectSound Device

 

--------------------------------------------------

Connections

--------------------------------------------------

1. [C:\mkv\subtitles.mkv]/(Video) -> [ffdshow Video Decoder]/(In)

Major: MEDIATYPE_Video

Subtype: {31435641-0000-0010-8000-00AA00389B71}

Format: FORMAT_MPEG2_VIDEO

 

2. [C:\mkv\subtitles.mkv]/(Audio) -> [ffdshow Audio Decoder]/(In)

Major: MEDIATYPE_Audio

Subtype: {00002001-0000-0010-8000-00AA00389B71}

Format: FORMAT_WaveFormatEx

 

3. [C:\mkv\subtitles.mkv]/(Subtitle) -> [ffdshow Video Decoder]/(In Text)

Major: {E487EB08-6B26-4BE9-9DD3-993434D313FD}

Subtype: {87C0B230-03A8-4FDF-8010-B27A5848200D}

Format: {A33D2F7D-96BC-4337-B23B-A8B9FBC295E9}

 

4. [ffdshow Video Decoder]/(Out) -> [Video Renderer]/(VMR Input0)

Major: MEDIATYPE_Video

Subtype: MEDIASUBTYPE_YV12

Format: FORMAT_VIDEOINFO2

 

5. [ffdshow Audio Decoder]/(Out) -> [Default DirectSound Device]/(Audio Input pin (rendered))

Major: MEDIATYPE_Audio

Subtype: MEDIASUBTYPE_PCM

Format: FORMAT_WaveFormatEx

 

 

--------------------------------------------------

Filters

--------------------------------------------------

1. C:\mkv\subtitles.mkv

2. ffdshow Video Decoder

3. ffdshow Audio Decoder

4. Video Renderer

5. Default DirectSound Device

 

--------------------------------------------------

Connections

--------------------------------------------------

1. [C:\mkv\subtitles.mkv]/(Video) -> [ffdshow Video Decoder]/(In)

2. [C:\mkv\subtitles.mkv]/(Audio) -> [ffdshow Audio Decoder]/(In)

3. [C:\mkv\subtitles.mkv]/(Subtitle) -> [ffdshow Video Decoder]/(In Text)

4. [ffdshow Video Decoder]/(Out) -> [Video Renderer]/(VMR Input0)

5. [ffdshow Audio Decoder]/(Out) -> [Default DirectSound Device]/(Audio Input pin (rendered))

Link to comment

Das ist die entscheidende Stelle:

 

3. [C:\mkv\subtitles.mkv]/(Subtitle) -> [ffdshow Video Decoder]/(In Text)

Major: {E487EB08-6B26-4BE9-9DD3-993434D313FD}

Subtype: {87C0B230-03A8-4FDF-8010-B27A5848200D}

Wenn man die GUIDs mit Google sucht, findet man einiges darüber heraus. Die erste ist MEDIATYPE_SUBTITLE, die zweite MEDIASUBTYPE_UTF8. Keine offiziellen von MS, die hat sich jemand anders ausgedacht. Jedenfalls versteht das ffdshow, verbindet sich mit dem Subtitle Output Pin, nimmt die Untertitel als UTF-8 entgegen und arbeitet sie in das Bild ein.

 

Allerdings gibt es bei Matroska noch weitere Untertitel-Ausgabeformate, die hier aufgezählt werden:

 

http://haali.cs.msu.ru/mkv/codecs.pdf

 

Ich habe hier eine m2ts-Datei (Blue Ray Format), für die der Haali Mediasplitter einen Subtitle Output Pin bildet, der reinen ASCII-Text liefert. Davon will ffdshow jedoch nichts wissen, d.h. verbindet sich nicht. Stattdessen hängt sich beim Rendern der Datei ein "Internal Script Command Renderer" von MS da dran, der versucht, die Untertitel als Script auszuführen, und das ist sicherlich etwas daneben. <_<

 

Der DVBViewer rendert jedoch nicht einfach die Mediadatei, sondern ermittelt erst den zuständigen Sourcefilter/Splitter, und rendert dann dessen Output Pins einzeln, um mehr Kontrolle über den Vorgang zu gewinnen. Bislang beschränkt er sich dabei auf Video/Audio-Pins, was Irrtümer des DirectShow GraphBuilders (wie beschrieben) verhindert, aber eben auch Untertitel generell.

 

Das lässt sich jedoch ändern. Fragt sich nur, wie man es sinnvoll beschränkt. Die Programmier-Praxis lehrt: Tue so viel wie nötig, aber kein Stück mehr, denn alles, was überflüssig ist, wird irgendwo zu unerwünschten Effekten führen. Deshalb hätte ich die Neigung, erst mal nur Subtitle Output Pins mit MEDIATYPE_SUBTITLE und MEDIASUBTYPE_UTF8 zu rendern, weil das ja offenbar geht - zumindest, solange ffdshow vorhanden ist. Inwieweit in MKV-Dateien noch andere Untertitel-Formate vorkommen, müsstest du anhand deiner Sammlung ermitteln. Und was passiert, wenn ein User ffdshow nicht installiert hat, ist noch eine ganz andere Frage...

 

Weiterhin ist zu berücksichtigen, dass es mehrere Untertitelspuren geben könnte (verschiedene Sprachen). Grundsätzlich unterstützt der DVBViewer eine Auswahl. Wahrscheinlich kann man die Spuren beim Matroska Sourcefilter/Splitter über das IAMStreamSelect Interface ermitteln und umschalten - etwas kompliziert, aber nicht unmöglich.

 

Es geht hier darum daß bestimmte Dateien, z.B. MKV mit Untertiteln nicht im DVBViewer abgespielt werden,

Erläutere das noch mal genauer. Bestimmte Dateien werden überhaupt nicht abgespielt? Oder alle? Also auch kein Bild/Ton? Wenn es nur einige sind, welches gemeinsame Merkmal weisen sie auf? Hier wäre dann ein Filtergraph-Vergleich zwischen der in GraphStudio gerenderten Datei und dem DVBViewer-Graph (-> Connect to Remote Graph) fällig, um die Ursache zu ermitteln.

 

Muss ich diesen Quatsch wirklich kommentieren?

Nein. Du solltest es lieber lassen, da du damit nur deine Unerfahrenheit hinsichtlich DirectShow dokumentierst. Sonst trägt das nichts bei. Wenn du in der Hinsicht über eine mehrjährige Praxis verfügen würdest, wäre dir sofort klar, warum die Einbindung des WMP als ActiveX indiskutabel ist. Ich wollte dir nur schonend beibringen, dass es schon längst in namhaften Mediaplayern so gehandhabt würde, wenn es tatsächlich Sinn machen würde. So doof sind die zuständigen Programmierer nun auch wieder nicht...

Link to comment
Auf jeden Fall gibts ja noch so Filter wie Directvobsub aber der wird ja nicht geladen! Der funktioniert nämlich selbst bei Overlay.

Den kannte ich noch nicht.

 

Das ist im Prinzip ein Video-Postprocessor, der die Aufgabe hat, Untertitel ins Bild zu malen. Er lässt sich mit dem Postprocessor Plugin nachträglich in den vom DVBViewer gebauten Graphen einfügen (gerade getestet, man muss gemäß ReadMe einen entsprechenden Eintrag in der Postprocessor.ini hinzufügen, da der Filter standardmäßig nicht berücksichtigt wird), aber das dürfte nicht viel nützen, da dabei der zweite Input Pin des DirectVobSub nicht mit dem Subtitle Output Pin des (Matroska) Splitters verbunden wird. Nur bei einer separaten Untertitel-Datei könnte er eventuell etwas ausrichten (habe keine Testmöglichkeit zur Hand).

 

Die Art, wie der DVBViewer den Graphen baut, lässt solche Filter außen vor. Dies verhindert weitgehend, dass der ganze Müll, den sich Leute mit Codec-Packs ins System holen, den DVBViewer belästigt, denn damit gab es früher reichlich Ärger ("Hilfe, warum steht das TV-Bild auf dem Kopf", und ähnliches).

 

Das Grundproblem ist folgendes: Wenn der DVBViewer wie der WMP einfach den DirectShow GraphBuilder beauftragen würde, die Mediadatei zu rendern (wobei der DirectVobSub geladen würde), hätte er kaum noch Kontrolle darüber, welcher Filtergraph entsteht, wodurch verschiedene DVBViewer-Features nicht mehr funktionieren würden (z.B. das OSD) und sich je nach installierten DirectShow-Filtern alles mögliche in die Wiedergabe einmischen würde. Letzteres kann gut gehen, oder auch nicht... resultierende Probleme müssten durch Eingriffe auf System- bzw. DirectShow-Ebene behandelt werden (registrieren/deregistrieren von Filtern, Merit-Werte anpassen, alles mit Admin-Rechten), und dazu sind die meisten Anwender erfahrungsgemäß mangels Einblick in die Funktionsweise von DirectShow nicht in der Lage.

Link to comment
Erläutere das noch mal genauer. Bestimmte Dateien werden überhaupt nicht abgespielt? Oder alle? Also auch kein Bild/Ton? Wenn es nur einige sind, welches gemeinsame Merkmal weisen sie auf? Hier wäre dann ein Filtergraph-Vergleich zwischen der in GraphStudio gerenderten Datei und dem DVBViewer-Graph (-> Connect to Remote Graph) fällig, um die Ursache zu ermitteln.

 

Wenn man eine MKV abspielen möchte, dann bleiben Bild und Ton stehen. Man hat die Möglichkeit vorzuspulen, wenn man das macht, funktioniert das Abspielen auch wieder. Die Frage ist nur wie weit man vorspulen muß, bei manchen MKVs reichen 10 Sekunden, bei manchen MKVs muß man etliche Minuten vorspulen und verpasst dadurch natürlich die Hälfte vom Film.

 

Nein. Du solltest es lieber lassen, da du damit nur deine Unerfahrenheit hinsichtlich DirectShow dokumentierst. Sonst trägt das nichts bei. Wenn du in der Hinsicht über eine mehrjährige Praxis verfügen würdest, wäre dir sofort klar, warum die Einbindung des WMP als ActiveX indiskutabel ist. Ich wollte dir nur schonend beibringen, dass es schon längst in namhaften Mediaplayern so gehandhabt würde, wenn es tatsächlich Sinn machen würde. So doof sind die zuständigen Programmierer nun auch wieder nicht...

 

Du hast von kommerziellen Anwendungen wie PowerDVD gesprochen. Es ist doch klar das die kein WMP als ActiveX einbinden können, weil es ja sonst nur eine GUI mit WMP ActiveX wäre. Die wollen mit ihrer Applikation ein WMP-unabhänges Programm anbieten. Es würde sich auch keine Software verkaufen lassen, die eigentlich nur eine GUI ist und vom Anwender verlangt noch andere Zusatzsoftware mit derselben Funktionalität zu installieren damit das Programm überhaupt läuft.

 

Beim DVBViewer ist es allerdings anders, er erfüllt seine Hauptfunktion ohne den WMP, nämlich die Wiedergabe von DVB-Quellen. Um die Zusatzfunktion "Videos abspielen" zu unterstützen, habe ich den Vorschlag mit dem ActiveX gemacht, nicht mehr und nicht weniger.

Link to comment
Das Grundproblem ist folgendes: Wenn der DVBViewer wie der WMP einfach den DirectShow GraphBuilder beauftragen würde, die Mediadatei zu rendern (wobei der DirectVobSub geladen würde), hätte er kaum noch Kontrolle darüber, welcher Filtergraph entsteht, wodurch verschiedene DVBViewer-Features nicht mehr funktionieren würden (z.B. das OSD)

 

Wie wird denn das OSD derzeit realisiert? Ich habe mir mal das DSPack angeschaut, wenn man den Graphen automatisch aufbaut, ist es in der Lage die MKVs mit Untertiteln abzuspielen.

Edited by Fruchtzwerg
Link to comment
Wenn man eine MKV abspielen möchte, dann bleiben Bild und Ton stehen. Man hat die Möglichkeit vorzuspulen, wenn man das macht, funktioniert das Abspielen auch wieder.

Ähnliches wurde schon intern für die Wiedergabe von m2ts-Dateien mit dem MPC Splitter & ffdshow im DVBViewer GE berichtet. Bislang habe ich keine Ahnung, woran das liegt. Wenn der Graph fertig gebaut ist, startet der DVBViewer die Wiedergabe ganz normal und konventionell über IMediaControl.Run, und es ist nicht ersichtlich, warum Splitter und Decoder dabei ins Stocken kommen. Mit dem DVBViewer Filter als Splitter, der inzwischen in einer internen Testversion das ganze Spektrum von m2ts-Video- und Audioformaten bewältigt, passiert das nicht.

 

DirectShow ist halt ein Glücksspiel und sollte als solches eigentlich verboten werden, denn egal was man versucht, irgendwo geht es immer schief ;)

 

Wie wird denn das OSD derzeit realisiert?

Da hängt 'ne Menge dran. OSD Sourcefilter im DVBViewer Pro (siehe Connect to Remote Graph), Konfiguration des gewählten Videorenderers, die vor dem Verbinden durchgeführt werden muss, usw. Alles mit einem komplett vom DirectShow GraphBuilder via Render Media File erstellten Graphen nicht machbar. Deshalb (und aus weiteren Gründen) wird im DVBViewer der Bau des Graphen nur teilweise delegiert.

Link to comment
Da hängt 'ne Menge dran. OSD Sourcefilter im DVBViewer Pro (siehe Connect to Remote Graph), Konfiguration des gewählten Videorenderers, die vor dem Verbinden durchgeführt werden muss, usw. Alles mit einem komplett vom DirectShow GraphBuilder via Render Media File erstellten Graphen nicht machbar. Deshalb (und aus weiteren Gründen) wird im DVBViewer der Bau des Graphen nur teilweise delegiert.

 

Wie wäre es damit: Du lässt den Graphen für eine Videodatei erstmal automatisch aufbauen und merkst Dir dann im Programm den korrekten Aufbau. Dann baust Du Deinen eigenen Graphen auf mit der vorher gemerkten Konfiguration, baust den OSD Filter ein und konfigurierst entsprechend den Videorenderer.

Link to comment

Die Subs sind schon verbunden, aber mit einem Nullrenderer, der die Daten ins Leere laufen lässt. Dies für den Fall, dass der Splitter einen Abnehmer an jedem Output-Pin erwartet. Die OSDSource siehst du nur bei VMR7/VMR9.

 

Ich habe es gestern im DVBViewer GE implementiert, dass der Subtitle Pin zusätzlich gerendert wird, wenn er MEDIATYPE_SUBTITLE und MEDIASUBTYPE_UTF8 anbietet. War keine so große Sache, und wird wohl auch früher oder später im DVBViewer Pro landen. Das Schwierigste ist in solchen Fällen meistens, Anwender dazu zu bringen, anstatt haarsträubender Vorschläge verwertbare Informationen zu liefern. ;)

 

Ob der Nullrenderer am Blockieren des Graphen nach dem Wiedergabestart beteiligt ist, wird sich bei Tests zeigen, sobald solch eine DVBViewer-Version öffentlich verfügbar ist. Oder du probierst schon jetzt in GraphStudio, ob das Auswirkungen hat, indem du einen funktionierenden Graph entsprechend umbaust. Den Nullrenderer findest du irgendwo unter Graph -> Insert Filter.

Link to comment

Ich kann das auch bestätigen, alle Videos mit Untertiteln bleiben am Anfang stehen und laufen dann weiter wenn man vorspult (das wußte ich vorher nicht).

Den Verdacht das der Nullrenderer blockiert hatte ich eben auch. Wäre es eigentlich ein großes Problem gewesen ausschließlich auf den externen directvobsub filter zuzugreifen, immerhin hat der etliche Möglichkeiten die es wahrscheinlich in DVBViewer nicht so schnell geben wird.

Link to comment
Ich kann das auch bestätigen, alle Videos mit Untertiteln bleiben am Anfang stehen und laufen dann weiter wenn man vorspult (das wußte ich vorher nicht). Den Verdacht das der Nullrenderer blockiert hatte ich eben auch.

Wäre schön, wenn das mal ein Betroffener in GraphStudio überprüfen würde. Ich habe solche Dateien nicht.

 

Wäre es eigentlich ein großes Problem gewesen ausschließlich auf den externen directvobsub filter zuzugreifen, immerhin hat der etliche Möglichkeiten die es wahrscheinlich in DVBViewer nicht so schnell geben wird.

Über eine Einbindung via Plugin habe ich schon nachgedacht. Es gibt leider einige programmtechnische Hürden. Störend ist zudem, dass der DirectVobSub Filter als Video Postprocessor die gerade für H.264 wünschenswerte Hardware-Beschleunigung (DXVA) verhindert, wie ein Test ergeben hat. Er unterbindet den erforderlichen speziellen Datenverkehr zwischen Decoder und Videorenderer, da er Untertitel nur in einen "normalen" Output des Decoders einblenden kann.

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...