Ist für die Anwendung C++ geeignet


  • Mod

    @naldo sagte in Ist für die Anwendung C++ geeignet:

    Programmiersprachen sind seit Jahrzehnten mein Job,
    doch nur die problemorientierten der Großrechnerwelt.
    Gibt es für meine Anwendung eine, die relativ schnell
    zu erlernen ist?

    Für einfache bis mittelschwere Batch-Routinen: Die Batch-Sprache deines Zielsystems. Hier von DOS/Windows? Windows Powershell gibt es zwar auch, aber das ist alles andere als einfach zu erlernen. Unter Linuxartigen Systemen gibt es viele Shells, die meisten mittelschwer zu erlernen.

    Für schwere Batch-Routinen ist Python relativ schnell und intuitiv zu lernen, wahrscheinlich sogar einfacher als die meisten Shellsprachen. Wenn du also gar nichts kannst, dann ist das ein guter Startpunkt, selbst für einfache Skripte.

    Ansonsten ist die einfachste Sprache immer die, die du schon kannst. Batchprocessing kannst du mit jeder machen. Irgendwie eine komische Frage für jemanden mit jahrzehntelanger Erfahrung…



  • Die Filmdaten wurden von den diversen Receiver-Herstellern nach Belieben benannt.
    Ich habe Vantage-Filmdateien, bei denen der inhaltlich erste Film-Stream eine *.trp Datei
    ist, die weiteren sind durchnumeriert, also immer *.001 , *.002 .... usw.
    wobei bis auf die inhaltlich letzte Datei alle die gleiche Länge haben.
    Windows sortiert die *.trp Datei in der Anzeige natürlich nach hinten.
    Im Filmordner stehen für Steuerung in Vantage-Receivern und für
    Film-Inhaltsangaben außerdem noch andere Dateien, die aber für die
    Ausgabe wahrscheinlich nicht benötigt werden.



  • ffmpeg kann auto discovery und part discovery...zumindest auf unix. entsprechend waere das vermutlich das sinnigste wenns um dutzende verschiedener formate geht.

    pwsh ist mittlerweile auch nur noch c# mit dotnet bindings, definitiv angenehmer als mit batch rumzuwurschteln.



  • Aber hallo !
    Als EDV-Pionier durfte ich Mitte der 60er Jahre
    noch Programmierzeilen in Karten lochen,
    Nach Maschinen-Code, Maus-Autocoder, RPG, SPF u.a.
    kam Fortran, Cobol und PL1
    Doch dann kam SAP und aus war's beruflich
    mit eigener Systementwicklung und Programmierung
    Privat noch ein paar Spielchen für den Apple 2E
    programmiert und mal in Basic was für
    eine eigene PC-Anwendung. Da darf man nach
    20 Jahren Pause doch mal nach einer geeigneten
    Programmiersprache für Filmdateien fragen.



  • hast du ein Geschichtsbuch auswendiggelernt?



  • @Cardiac

    @Cardiac sagte in Ist für die Anwendung C++ geeignet:

    ffmpeg kann auto discovery und part discovery...zumindest auf unix. entsprechend waere das vermutlich das sinnigste wenns um dutzende verschiedener formate geht.

    pwsh ist mittlerweile auch nur noch c# mit dotnet bindings, definitiv angenehmer als mit batch rumzuwurschteln.

    Sorry, aber das Ist keine echte Hilfe


  • Mod

    🐟



  • Bevor es hier zu persönlich wird

    Ganz konkret
    Ich suche eine Programmiersprache, die keinen Compiler braucht und
    mit der man in der Windows Welt eine externe Datei, bestehend aus
    Windows-Ordnern sequentiell einlesen kann. Einige Dateien in den
    Ordnern, die man am Dateityp erkennen kann, sollen neu zusammengefügt
    und als neuer Satz im Dateiformat *.ts auf eine externe Ausgabedatei
    geschrieben werden.
    In der Windows PowerShell, in die ich grade mal reingeschaut habe,
    finde ich auf Anhieb nichts dergleichen.
    Kann Python das?



  • @naldo
    Wenn es um Videos geht ist ffmpeg das Tool deiner Wahl.

    Phyton braucht einen Interpreter (bzw. Laufzeitumgebung)
    Da gibt es bestimmt auch was zum Einbinden von ffmpeg.



  • Ich weiß gar nicht, was 'eine Datei, bestehend aus Windows-Ordnern' sein soll ...
    Falls das Problem sein sollte:
    Lies eine Datei im Binärformat.
    Schreibe diese Datei mit der Endung *.ts in eine neue Datei.
    Lies weitere 1 bis n Dateien im Binärformat.
    Hänge diese Dateien an die erste geschriebene an.

    Dann sollte das mit Powershell - Mitteln machbar sein:

    get-content -encoding byte

    sollte das lesen.

    out-file -encoding byte -append

    sollte das schreiben können.



  • ffmpeg kennt das Dateiformat nicht
    und irgendwas zum Einbinden gibt
    es auch nicht immer

    Gesucht werden Statements um
    eine von meinen 250 mit Vantage-Filmdateien
    bespielten 1 - 3 TB großen FAT32-formatierten
    USB-Festplatten morgens an den Windows-PC
    zu hängen und abends die NTFS-formatierte
    USB-Festplatte mit den Ausgabedateien der Filme
    im heutzutage allgemein gültigen *.ts Format
    erstellt zu haben.
    PowerShell scheint tatsächlich mehr zu können,
    als ich dachte. Gibt es hier dafür einen Spezialisten,
    der weiterhelfen kann.

    Mit irgendwas in dieser Art könnte es losgehen.

    Get-Volume | Sort DriveLetter
    [System.IO.DriveInfo]::GetDrives( )
    Get-WmiObject "Win32_LogicalDisk"
    Get-WmiObject "Win32_DiskDrive"
    Get-Disk
    Get-PhysicalDisk
    Get-WmiObject -Query "Select * From Win32_LogicalDisk Where DriveType = '4'"



  • Hab mal gehört, dass die meisten Recorder ein proprietäres Format benutzen. Bevor du da jetzt zuviel Arbeit reinsteckst versuch doch erstmal eine Datei zu konvertieren. Wenn das klappt kannst du dir über die Automatisierung Gedanken machen.



  • Das Dateiformat ist nichts 'Hausgemachtes'. Die Filmdateien sind im Grunde schon ts-Dateien,
    denen man nur 'hausgemachte' Datei-Endungen beschert hat. Wenn man die in der richtigen Reihenfolge verkettet, könnte es an den Schnittstellen/Verknüpfungspunkten zwar kurzfristige Störungen beim Ansehen der Filme geben, aber das wäre auch schon alles.



  • Ich habe auch schon an Tools gedacht, die nur alle Dateinamen in solche mit der Endung .ts ändern,
    aber das gäbe dann nur eine Fülle von Filmschnipseln, was auch keine gute Lösung wäre.



  • @naldo sagte in Ist für die Anwendung C++ geeignet:

    ffmpeg kennt das Dateiformat nicht
    und irgendwas zum Einbinden gibt
    es auch nicht immer

    Gesucht werden Statements um
    eine von meinen 250 mit Vantage-Filmdateien
    bespielten 1 - 3 TB großen FAT32-formatierten
    USB-Festplatten morgens an den Windows-PC
    zu hängen und abends die NTFS-formatierte
    USB-Festplatte mit den Ausgabedateien der Filme
    im heutzutage allgemein gültigen *.ts Format
    erstellt zu haben.
    PowerShell scheint tatsächlich mehr zu können,
    als ich dachte. Gibt es hier dafür einen Spezialisten,
    der weiterhelfen kann.

    Mit irgendwas in dieser Art könnte es losgehen.

    Get-Volume | Sort DriveLetter
    [System.IO.DriveInfo]::GetDrives( )
    Get-WmiObject "Win32_LogicalDisk"
    Get-WmiObject "Win32_DiskDrive"
    Get-Disk
    Get-PhysicalDisk
    Get-WmiObject -Query "Select * From Win32_LogicalDisk Where DriveType = '4'"

    Verstehe ich nicht ... wenn Du morgens eine Quell- und eine Zielplatte an den PC hängst, dann 'weißt' Du doch deren Laufwerksbuchstaben bereits?

    Du brauchst doch dann nur noch aus n Dateien 1 Datei zu machen, indem Du sie einfach hintereinander hängst, wenn ich Dich richtig verstehe, muss da nichts konvertiert oder sonstwas werden ...



  • Eine kurze suche im internet hat das hier hervorgebracht (Suchbegriffe: windows combine ts files):

    https://superuser.com/questions/692990/use-ffmpeg-copy-codec-to-combine-ts-files-into-a-single-mp4

    Mit dem wissen als basis kann man sehr gut was mit einem powershell script bauen.



  • @Belli

    @Belli sagte in Ist für die Anwendung C++ geeignet:

    Ich weiß gar nicht, was 'eine Datei, bestehend aus Windows-Ordnern' sein soll ...
    Falls das Problem sein sollte:
    Lies eine Datei im Binärformat.
    Schreibe diese Datei mit der Endung *.ts in eine neue Datei.
    Lies weitere 1 bis n Dateien im Binärformat.
    Hänge diese Dateien an die erste geschriebene an.

    Dann sollte das mit Powershell - Mitteln machbar sein:

    get-content -encoding byte

    sollte das lesen.

    out-file -encoding byte -append

    sollte das schreiben können.

    Habe gestern mal getestet
    Funktioniert tatsächlich, aber braucht für einen einzigen Film 16 Stunden.


  • Mod

    @naldo sagte in Ist für die Anwendung C++ geeignet:

    Habe gestern mal getestet
    Funktioniert tatsächlich, aber braucht für einen einzigen Film 16 Stunden.

    Du schriebst oben, das wäre auf USB-Platten. Sind das zufällig USB2-Platten? Und schreibst du etwa zurück auf diese (am besten noch, während du gleichzeitig über die gleiche Schnittstelle liest)? Dann kann das natürlich schon so sein. Die Schreibgeschwindigkeit von USB2-Platten ist oft unterirdisch und der Gesamtdurchsatz (gleichzeitig Lesen und Schreiben) noch viel mehr. Schlimmstenfalls sind das dann nur Megabytes/Sekunde, was bei vermutlich vielen Gigabytes schnell ein paar Stunden werden können. Bellis Methode ist quasi nur durch die Geschwindigkeit deiner Datenträger eingeschränkt. Musst du was schnelleres wählen. Ein zeitgemäßer Datenträger kann 100-1000 Mal schneller sein. Das erstmalige Übertragen deiner Daten wird natürlich auch erst einmal Stunden dauern, aber immer noch ungleich schneller, als wenn du auch noch zurück schreibst.



  • Je nachdem, wie groß die Dateien sind, gibt es - sicher auch unter Powershell - bessere Methoden:
    get-content zB liest erst die ganze Datei in den RAM, sollte der zu klein sein, wird mit der Auslagerungsdatei herumgemacht.
    Das kann man natürlich optimieren, indem man Lese/Schreiboperationen wählt, die nicht die ganze Datei in einem Rutsch einlesen ...


Anmelden zum Antworten