.mpg und .ts wie unter Delphi einladen?

  • Hallo,

    ich Suche eine Möglichkeit Transport Streams unter Delphi einzuladen und auszuwerten. Bisher habe ich nur die Möglichkeit gefunden MPG oder TS über die DGDecode.DLL einzubinden.
    Hierbei ist es allerdings nur möglich die Streams über eine D2V Datei zu laden. Diese Datei kann ich zB mit DGIndex.exe erzeugen lassen. Mein Programm läuft, die einzelnen Frames kann ich ansprechen und anzeigen.


    Code
    function openMPEG2Dll(name: PChar): PVideoInfo; stdcall; external 'DGDecode.dll' name '_openMPEG2Source_SC@4';
    procedure closeVideoDll; stdcall; external 'DGDecode.dll' name '_closeVideo_SC@0';
    function getFrameDll(frame: integer): PByteArray; stdcall; external 'DGDecode.dll' name '_getFrame_SC@4';
    function getRGBFrameDll(frame: integer): PByteArray; stdcall; external 'DGDECODE.dll' name '_getRGBFrame_SC@4';

    Nun möchte ich allerdings ohne vorher eine D2V Datei zu erzeigen den Stream einladen und weiss nicht weiter. Eine "d2v on the fly" Lösung.

    Mein Programm soll in Stream nach Werbung suchen und eine entsprechende Schnittdatei erzeigen. Somit wäre es in Ordnung vor dem Laden des Filmes einen "SCAN" zu machen.

    Wie kann ich einen Stream direkt einladen und "D2v on the fly" durchführen? Gibt es eine bessere Lösung Streams zu laden als mit der DGDEcode.DLL?

    Wäre über eine Hilfe sehr erfreut.

    Gruss
    Sascha

  • Hallo Sasha und :welcome: !

    Ich kenne mich zwar mit dem Programmieren nicht gerade so super aus , aber ich denke ich kann ein wenig zu dem Thema besteuern.

    Solltest du eine MPEG Datei mit den internen Befehlen laden wollen wird das ganze über die Windows-internen Funktion abgespielt , also entweder DirectShow-Interface oder VideoForWindows-Interface.
    Der Nachteil dabei ist , das du nicht genau wissen kannst , welche Filter zum decodieren verwendte werden.

    Es kann ja auch sein , das der User PostProcessing eingeschaltet hat und so werden dann die Ergebnisse deines Programms verfälscht.

    Ich halte also den Weg über DGDecode für eine sehr gute Idee !
    Amnon82 hatte mal auf Basis von DGDecode einen Player für MPEG- und TransportStream-Videos in Delphi geschrieben.
    Dort war es nicht nötig eine D2V zu erstellen und ich denke wenn du ihn fragst wird er dir gerne bei deinem Projekt helfen.

    Die Idee Werbung automatisch zu entfernen finde ich gut , also würde ich mich freuen , wenn du von deinen Ergebnissen deines Programms einmal berichten könntest , sobald du Ergebnisse erzielst.

    Gruss
    Christian

    Die Rotation der Erde wurde in den letzten Jahren primär durch sich im Grab umdrehende Musiker angetrieben - Mainstream sei dank.

  • Hallo Eastermeyer,

    danke für die herzlichen Worte. Habe mich die ganze Zeit durch englische Forum gelesen und bin froh das es Doom9 auch in deutsch gibt :D

    Sobald etwas brauchbares aus dem Projekt heraus kommt stelle ich es gerne vor. Einige Analysen funktionieren bereits. Ich hoffe nur das ich das d2v Problem umgehen kann.

    Danke
    Sascha

  • Zitat von sascha.b

    ich Suche eine Möglichkeit Transport Streams unter Delphi einzuladen und auszuwerten. Leider habe ich bisher nur die Möglichkeit gefunden MPG oder TS über die DGDecode.DLL einzubinden.


    Stellt sich die Frage wie dies gemeint ist.

    Um MPEGs anzeigen zu lassen, kann man Avisynth 2.5 verwenden. Mit Avisynth_c.pas oder VFW.pas. Siehe http://forum.gleitz.info/showpost.php?p=260933&postcount=60

    Gruß Frank

  • Danke für den Hinweis.

    melbin.org ist leider down.

    Im Moment fehlt mir noch etwas Hintergrundwissen da ich mich bisher nicht mit MPG oder Filterplugins beschäftig habe.

    Ist es richtig das ich mit avisync auch "Transport Streams" einladen kann?

    Gruss
    Sascha

  • Zitat von sascha.b

    Ist es richtig das ich mit avisync auch "Transport Streams" einladen kann?


    Weiß ich leider nicht, da mir bisher keine Transport Streams zur Verfügung standen. Die SkyStar speichert Program Streams.

    Gruß Frank

  • Yepp , per D2V-Project und MPEG2Source können auch TransportStreams eingeladen werden.

    Die Rotation der Erde wurde in den letzten Jahren primär durch sich im Grab umdrehende Musiker angetrieben - Mainstream sei dank.

  • Ist der Server mit den "avisync nach Pascal" Dateien generell down oder nur zur Zeit? Vielleicht gibt es ja irgendwo nen Mirror. Dann würde ich mir die ganze Geschichte mal anschauen.

    Ist es richtig das D2V-Projekt zB DGDecode oder meg2dec ist und
    MPEG2Source das avisync ist?

    Gruss
    Sascha

  • Zitat von sascha.b

    Ist der Server mit den "avisync nach Pascal" Dateien generell down oder nur zur Zeit?


    :grübeln: Damit kann ich nichts anfangen. Könntest Du das näher erklären?

    Gruß Frank

  • Fr_An:

    Wohl schon recht spät. Dachte eigentlich hätte den Servernamen "Mellbin.org" hingeschrieben.


    Eastermeyer:
    Genau den meine ich, bzw die V4 oder V5. Der ist offline. Gibt es nen Mirror?


    LigH:
    Danke. Siehe oben ;)

  • Falls die avi_synth keiner hat würde ich auch mit der DGDecode.dll weiter kommen.

    Dazu benötige ich Hintergrundwissen wie ich aus einem "Transport Stream" eine d2v Datei machen kann die ich dann mit DGDecode.DLL einladen kann.

    Gruss
    Sascha

  • - DGIndex.exe starten
    - TS-Datei öffnen
    - evtl. geeignete Streams darin auswählen?
    - Projektdatei (*.d2v) speichern

    Das Video wird analysiert, in die d2v-Datei werden Eigenschaften und die Positionen von GOPs geschrieben.

    Die erzeugte d2v-Datei wird dann in einem AviSynth-Skript in der Funktion "MPEG2Source" aus dem Plugin "DGDecode.dll" verwendet, oder man versucht, die DLL dynamisch zu laden und deren Funktionen zu nutzen.

  • Da kommt mein MPEG2-Player ja gerade richtig !!!

    Ich dachte da kräht kein Hahn danach.
    Er ließt VOB, M2V und MPG direkt mit dem eingebauten
    MPEG2-Decoder aus. Nur den Sound-Teil hab ich noch nicht
    hinzugefügt. Somit hatte ich ihn auch nicht mehr weiterentwickelt.

    _____________________________________________________________________________

    [Blockierte Grafik: http://img291.imageshack.us/img291/4840/m2p0012bh.png]

    Version 0.01 - 08.04.06

    * the first and last public release
    * Download 0.01 + Source

    ... falls Du was verwendest bitte meinen Nic in Deinem Credits-Fenster einbinden. Danke

    Phil

    P.S.

    Hatte ich auch auf Doom9.org released
    AVISYNTH_C und Sample und Source gibts auf meiner Homepage

  • Zitat von Amnon82

    ... falls Du was verwendest bitte meinen Nic in Deinem Credits-Fenster einbinden. Danke


    Hoffentlich sind deine Quellenangaben auch vollständig und lizenzgerecht.

  • Amnon82:

    Danke danke für die Sourcen, das wird mir weiter helfen. Dein Projekt habe ich bereits im englischen Forum gefunden, wusste aber nicht das es in Delphi ist :D

    Leider liest dein Player keine "MPEG2 Transport Streams", im Moment ein wichtiges Thema für mich. Es gibt eine mpeg2dec.dll die modifiziert ist und auch "TS" liesst. Werde mal später testen ob die mit deinem Player läuft.

    Warum "TS"? Ich nehme Filme mit meiner Dreambox auf. Diese speichert die Filme im "TS" Format. Jetzt möchte ich gerne die Streams ohne Werbung auf DVD brennen. Dazu scanne ich das "TS" File, erstelle einen Schnitt den ich erst dann Demultiplexe. Spart die Zeit die Werbung zu demultiplexen und als MPG wieder zu plexen.

    Danke,
    Sascha

  • Zitat

    Wo? Da hätte ich auch Interesse dran...

    Im Doom9.ORG Forum wurde die mpeg2dec2 besprochen, die im Projekt DVD2AVIT3 benutzt wird. Diese unterstützt auch die "TS".

    Für avisynth < V2.5
    http://www.trbarry.com/MPEG2DEC2.zip
    http://forum.doom9.org/showthread.php?t=41335&page=1

    Die Video und Audio Pid muss hier allerdings noch manuell angegeben werden. Siehe Readme. Sourcen in C sind enthalten.

    Desweiteren gibt es eine mpeg2dec3 für avisynth >= V2.5 , hier weiss ich allerdings nicht ob diese für "TS" ist
    http://nic.dnsalias.com/MPEG2Dec3v110_src.zip
    http://nic.dnsalias.com/MPEG2Dec3v110.zip
    http://forum.doom9.org/showthread.php?s=&threadid=53164


    .

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!