Screen capture läuft nicht stabil

  • VB.NET

Es gibt 47 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Neu

    Jetzt verstehe ich endlich was hier los ist !

    Ich benötige überhaupt keine Konversion. Ich gebe einfach für die Ausgabe Datei die Extension .mp4 mit ... und schon wird dieses Format auch generiert. Ich hatte gedacht ffmpeg kann nur .avi erzeugen !

    Gut dass wir darüber gesprochen haben. :)

    Jetzt ist diese Wissenslücke also geschlossen und meine Frage nach der Konversion erst mal gegenstandslos. Ich erzeuge in meinem Programm einfach .mp4 und "habe fertig", um es mit Trappatoni zu sagen ... :)

    Mein eigentliches Problem ist damit also gelöst. Danke !

    Aber da wir jetzt schon mal die Diskussion begonnen haben ...

    ...ich vermute mal, dass du mir zeigen willst, wie man eine bestehende .avi Datei in .mp4 umwandelt. Auch interessant ... aber jetzt frage ich mich nur, wie ich das mit deinem Programm in Einklang bringe ...

    Also angenommen, meine Datei heißt beispielsweise "hugo.avi" ... wie bekomme ich das Dingens dann nach "Test.ts" .... und was ist eine .ts Datei überhaupt ?

    Das Ganze muss irgendwie mit deinem connect zusammenhängen ... da erzeugst du wohl aus der .avi Datei (oder irgend einem anderen Format) einen Stream, den du dann mit ffmpeg in .mp4 umwandelst ...

    VB.NET-Quellcode

    1. Sub StartProcess()
    2. Dim enc = Encoding.GetEncoding(CultureInfo.CurrentUICulture.TextInfo.OEMCodePage)
    3. cmd = New Process()
    4. cmd.StartInfo.FileName = "cmd.exe"
    5. cmd.StartInfo.WorkingDirectory = ""
    6. cmd.StartInfo.CreateNoWindow = True
    7. cmd.StartInfo.UseShellExecute = False
    8. cmd.StartInfo.RedirectStandardOutput = True
    9. cmd.StartInfo.RedirectStandardInput = True
    10. cmd.StartInfo.StandardOutputEncoding = enc
    11. AddHandler cmd.OutputDataReceived, AddressOf WriteProcessOutput
    12. cmd.Start()
    13. cmd.BeginOutputReadLine()
    14. End Sub


    Muss ich jetzt hier irgendwo den Namen der .avi Datei eintragen ?

    Neu

    @Peter329 TS ist TransportStream, wird vom terrestrischen TV gesendet.
    Du musst ausschließlich aufrufen:
    ffmpeg PARAMETER SOURCE_MOVIE.xyz DESTINATION_MOVIE.mp4
    feddich.
    Das ffmpeg kann unheimlich viele Formate (hier: .xyz) und macht dann daraus mp4 oder was Du haben willst, aber mp4 ist sehr gut komprimiert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Neu

    RodFromGermany schrieb:

    TS ist TransportStream, wird vom terrestrischen TV gesendet.


    Gut ... das habe ich jetzt verstanden. Aber das terrestrische TV hat ja mit der Aufgabe eine .avi nach .mp4 zu konvertieren möglicherweise nicht gar so viel zu tun.

    Meine Frage ist immer noch offen. Wie schaffe ich die Verbindung meiner zu konvertierenden "hold.avi" mit deinem Programm. Wenn das Dingens nicht über hellseherische Fähigkeiten verfügt, dann muss ich diesen Namen doch irgendwie bekannt machen !

    Oder stehe ich auch hier ein um's andere Mal wieder auf dem Schlauch ! :)

    Neu

    Peter329 schrieb:

    auf dem Schlauch
    Wahrscheinlich. ;)
    Den Ziel-Namen kannst Du aus dem Ausgangsnamen berechnen, z.B. mit

    VB.NET-Quellcode

    1. Dim newName = Path.ChangeExtension(oldName, ".mp4")
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Neu

    RodFromGermany schrieb:

    Den Ziel-Namen kannst Du aus dem Ausgangsnamen berechnen


    ehem ... den ZIELNamen muss ich doch gar nicht berechnen. Den setze ich doch selber fest ! "hold.avi" ist die QUELLE .. und den Namen der Quelle kann das Programm nicht berechnen ! Denn dieser Name kann irgendwie lauten !

    Also nochmal: wie teile ich deinem Programm mit, woher es die Eingabedaten nehmen soll ... die könnten ja durchaus in "T:\jodelpop\susi\breitmueller\unsertolles.avi" stehen ! Und wie weise ich diese Eingabedatei deinem Programm zu.

    Woher um alles in der Welt soll dein Programm den Pfad denn sonst wissen ? Da muss es doch irgend einen Declare geben oder ein Assignment ... oder was auch immer ! Irgend eine klitzekleine Kleinigkeit verschweigst du mir hartnäckig .... :)

    Neu

    @Peter329 Du baust Dir den Kommandostring für ffmpeg zusammen, da kommen beide Dateipfade vor.
    Entweder Du startest ffmpeg über Process.Start() mit Programm und Argument
    oder
    Du schreibst eine Batch-Datei mit ffmpeg und Argument,
    speicherst die und führst sie mit Process.Start() aus.
    Feddich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Neu

    Also gut .... ich brauche mithin nix weiter als einen ffmpeg Aufruf mit den Parametern:

    Eingabe Datei: infile.avi
    Ausgabe Datei: outfile.mp4

    Dann erkennt ffmpeg die Eingabe als .avi ... und generiert .mp4 als Ausgabe.

    Das habe ich natürlich ausprobiert:

    ffmpeg.exe -y -i T:\...\o_Hold5.avi T:\...\new_Hold5.mp4

    Und das ist die Ausgabe .... (s.Anhang)

    Ok ... aber jetzt verstehe ich wenigstens endlich was du vorschlägst ... :)

    Du konvertierst einen .avi File in einen .mp4 File .. indem du ffmpeg aufrufst. Als Eingabe verwendest du den Pfad zum .avi File ... und als Ausgabe den Pfad zum neuen .mp4 File. ffmpeg ist so schlau und erkennt an den Extensions was zu tun ist.

    Wenn das so sein sollte, dann hätte man das nach meinem unmaßgeblichen Dafürhalten, auch in zwei Sätzen OHNE VB-Projekt samt connect und send und OHNE terrestrischen TV Stream sagen können. Zumal es hinterher nicht mal so ohne weiteres funktioniert. :)

    NIx für ungut ... ich schätze deine Ratschläge sehr ... und ich weiß, dass du tiefliegende Kenntnisse besitzt. Aber diesmal war das mit dem Ratschlag nicht ganz so optimal ... aber natürlich geht der Daumen trotzdem hoch.

    Auf alle Fälle bin ich froh, dass ich jetzt endlich verstehe, was mein Mentor mir da vermitteln wollte ... also Danke !

    LG
    Peter
    Bilder
    • s 2020-05-28 13-24-123.jpg

      18,76 kB, 960×96, 8 mal angesehen

    Neu

    Peter329 schrieb:

    Und das ist die Ausgabe .... (s.Anhang)
    Ich arbeite ne ganze Menge mit ffmpeg, aber solch Fehler ist mir noch nicht passiert.
    Kannst Du mal skizzieren, wie der Ur-Film beschaffen ist, um das nachvollziehen zu können?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!