Ist für die Anwendung C++ geeignet


  • 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