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