Ich konvertiere meine alten Dateien erneut und verwende den folgenden Code, um Metadaten aus der alten Datei in die neue zu kopieren:
for %%f in (*.mp4) do ffmpeg -i "%%f" -i "%%~nf_1.mp4" -map 1 -c copy -map_metadata 0 -map_metadata:s:v 0:s:v -map_metadata:s:a 0:s:a "%%~nf_.mp4"
Allerdings werden dabei keine Dateisystemmetadaten wie das Änderungsdatum kopiert. Gibt es eine Möglichkeit, diese Metadaten zu kopieren? Irgendwelche Vorschläge?
Danke.
PS: Ich verwende Windows 10
Antwort1
Die Metadaten, die ffmpeg kopiert, sind die mit dem Video verknüpften Daten. Das Änderungsdatum ist ein Attribut der Datei, das von Windows, aber nicht von ffmpeg verwaltet wird.
C:\dirsource
Wenn Sie die Dateien aus dem Ordner in den Ordner konvertiert haben D:\dirtarget
, kopiert das folgende PowerShell-Skript das Änderungsdatum von der Quelle zum Ziel:
Get-ChildItem "C:\dirtarget\" *.mp4 | ForEach-Object {
$_.LastWriteTime = (Get-Item ("C:\dirsource\"+$_.Name)).LastWriteTime
}
Dasselbe können Sie auch mit den Attributen CreationTime
und tun LastAccessTime
.
Erstellen Sie eine Datei mit dem Namen myname.ps1
und kopieren Sie den obigen Text hinein. Starten Sie eine PowerShell-Sitzung, verwenden Sie , cd
um zum Ordner mit dem Skript zu gelangen, und führen Sie dann den Befehl aus .\myname.ps1
.
Wenn Sie die Fehlermeldung „Kann nicht geladen werden, da die Ausführung von Skripts auf diesem System deaktiviert ist“ erhalten, führen Sie den folgenden Befehl im PowerShell-Fenster aus und wiederholen Sie anschließend den obigen Vorgang:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted