directx video quality

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von vanao.

    directx video quality

    Ich spiele mit folgendem code ein video ab.
    Das Video ist mit h.264 codiert, Auflösung 880x580, Framerate 30/s.
    Problem: es wird mit schlechter Qualität abgespielt. Deutlich schlechter als mit einem normalen Videoplayer (z.B. VLC).
    Woran kann das liegen?

    VB.NET-Quellcode

    1. Imports Microsoft.DirectX.AudioVideoPlayback
    2. Public WithEvents VideoDatei2 As Video
    3. VideoDatei2 = New Video(My.Computer.FileSystem.CurrentDirectory & "\vdo\BRX_Intro.mp4")
    4. VideoDatei2.Play()

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „vanao“ ()

    Also so wie es aussieht wird das Video direkt von der Festplatte aus abgespielt. Könnte daran evtl liegen. Also würde ich das Video zuerst mal ganz importieren und dann abspielen lassen...
    Wird das Video auch richtig dargestellt? Oder wird es auf eine niedrigere Qualität mit DirectX runtergeschraubt, um Leistung zu sparen?
    Hast du dir auch schon mal angeschaut, wies im WMP aussieht? Der verwendet nämlich die selben Codecs wie dein Code, der VLC benutz aber eigene.

    @programmer71
    Was hat die Festplatte damit zu tun? Bei einer hohen Bitrate kann das höchstens mal Ruckeln zur folge haben, aber du kannst sowieso kein ganzes Video in den RAM laden.
    Nein, an den Codecs kann es nicht liegen, da der WMP genau dieselben verwendet.
    Wie startest du denn die Anwendung? Im Debugmodus? Weil ich habe festgestellt, dass Videos manchmal nicht korrekt dargestellt werden, solange ich das Programm aus dem Studio starte. Die war bei allen Wiedergabemethoden so, die ich ausprobiert habe (MCI, AudioVideoPlayback, DirectShow). Als ich die Anwendung dann mit dem Explorer gestartet habe funktionierte es. Dies trat vor allem auch bei MP4 auf.
    Das ist es leider auch nicht. Unten sind mal zwei Screenshots als Anschauungsmatrial:

    Edit: gerade habe ich festgestellt, dass es auch in meiner App gut aussieht wenn ich es nicht im Fullscreen Modus abspiele. Die Verzerrungen kommen erst im Fullscreenmodus.

    VB.NET-Quellcode

    1. VideoDatei2.Fullscreen = True

    Gibt's da einen Lösungsansatz?


    Meine App:

    VLC-Player:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „vanao“ ()

    Ah, ja das kommt davon, dass standardmäßig mit Pixelwiederholung hochgerechnet wird. Mit dem AudioVideoPlayback-Namespace kannst du da auch nicht viel dran ändern, da die einzige Möglichkeit so verbuggt ist, dass eine Verwendung ausgeschlossen ist (Fehler in der Manged-API, der nicht mehr behoben wird). Dafür müsstest du dann schon DirectShow in Verbindung mit MediaFoundation verwenden und den Filter manuell auf EVR setzen. Anders ist dem meines Wissens nach leider nicht beizukommen.