Ist für die Anwendung C++ geeignet
-
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
-
-
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 immerGesucht 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 immerGesucht 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 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.
-
@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 ...