Such möglichkeit metadaten aus avi (bspw. den titel) zu entfernen (als batch file)
hallo zusammen,
leider werde ich einfach nicht fündig.
ich habe noch einiges an avi Dateien in meiner Sammlung, wo ich die Medataten (allen voran der Titel), entfernen möchte.
Leider funktioniert das nicht über die Eigenschaften der Datei in Windows.
Ferner suche ich auch die Möglichkeit dies bequem über ein batch File zu machen.
Denn es sind schon schon recht viele Files, die angepasst werden müssen.
Für meine MKV Dateien hat das super mit dem Programm mkvtoolnix funktioniert. Exakt das selbe suche ich halt für avi Dateien.
vorab vielen Dank und schöne Grüße
leider werde ich einfach nicht fündig.
ich habe noch einiges an avi Dateien in meiner Sammlung, wo ich die Medataten (allen voran der Titel), entfernen möchte.
Leider funktioniert das nicht über die Eigenschaften der Datei in Windows.
Ferner suche ich auch die Möglichkeit dies bequem über ein batch File zu machen.
Denn es sind schon schon recht viele Files, die angepasst werden müssen.
Für meine MKV Dateien hat das super mit dem Programm mkvtoolnix funktioniert. Exakt das selbe suche ich halt für avi Dateien.
vorab vielen Dank und schöne Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 359493
Url: https://administrator.de/contentid/359493
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo,
Ich bin mir sicher das es mit ffmpeg klappt. ffmpeg laesst sich auch wunderbar verscripten.
ffmpeg gibt es natuerlich auch fuer Windows. Und bei der Gelegenheit kannst Du die AVI gleich nach *.mkv oder aehnlich wandeln.
Schleife für variable Dateien-Konvertierung mit ffmpeg
Probieren tu ich es aus Zeitmangel selbst nicht.
BFF
Ich bin mir sicher das es mit ffmpeg klappt. ffmpeg laesst sich auch wunderbar verscripten.
ffmpeg -i input -c copy -map_metadata -1 output
ffmpeg gibt es natuerlich auch fuer Windows. Und bei der Gelegenheit kannst Du die AVI gleich nach *.mkv oder aehnlich wandeln.
Schleife für variable Dateien-Konvertierung mit ffmpeg
Probieren tu ich es aus Zeitmangel selbst nicht.
BFF
Hallo,
Recht hast Du natuerlich, wenn die Dateien umgewandelt werden sollen in ein anderes Format bzw. die geaenderte Datei auf eine andere Platte geschrieben wird.
Ich habe eben mal ein aktuelles ffmpeg (x64) auf eine 2GB grosse FullHD-MP4 losgelassen.
Das Dingens war in ca. 15 Sekunden fertig. Die Platte auf der das lief ist eine stinknormale 2TB WD mit 5400U/Min. Und meine Kiste hat nur 16GB mit einem AMD X6 1055T. Wenn Deine 1000 Dateien also auch 2 GB gross sind (je Datei 1h:30m Full HD Film) waere meine Kiste ohne Umwandlung nach irgendwas in ca. 4 Stunden fertig. Ich denke es ist einen neuen Versuch wert.
Wenn nicht, musst Du auf die Powershell-Fraktion ( @colinardo & @135051 ) warten. Da ist vielleicht auch irgendwas moeglich.
Eventuell schaust Du Dir auch das Programm Handbrake an, das ist auch batchfaehig. Ob es das kann was Du willst, keine Ahnung.
Schoenes WE!
BFF
Recht hast Du natuerlich, wenn die Dateien umgewandelt werden sollen in ein anderes Format bzw. die geaenderte Datei auf eine andere Platte geschrieben wird.
Ich habe eben mal ein aktuelles ffmpeg (x64) auf eine 2GB grosse FullHD-MP4 losgelassen.
ffmpeg.exe -i aefhd.mp4 -c copy -map_metadata -1 aefhd1.mp4
Das Dingens war in ca. 15 Sekunden fertig. Die Platte auf der das lief ist eine stinknormale 2TB WD mit 5400U/Min. Und meine Kiste hat nur 16GB mit einem AMD X6 1055T. Wenn Deine 1000 Dateien also auch 2 GB gross sind (je Datei 1h:30m Full HD Film) waere meine Kiste ohne Umwandlung nach irgendwas in ca. 4 Stunden fertig. Ich denke es ist einen neuen Versuch wert.
Wenn nicht, musst Du auf die Powershell-Fraktion ( @colinardo & @135051 ) warten. Da ist vielleicht auch irgendwas moeglich.
Eventuell schaust Du Dir auch das Programm Handbrake an, das ist auch batchfaehig. Ob es das kann was Du willst, keine Ahnung.
Schoenes WE!
BFF
Servus @freeuser616,
habe mir das damals selbst mal quick n' dirty mit einem Powershell-Skript geschrieben, es entfernt im diesem Beispiel den Titel des Videos ohne eine Kopie zu erstellen direkt im RIFF-Stream des AVIs:
Angabe des Ordners in der letzten Zeile.
Probiers mal aus, ist leider schon etwas länger her, sollte aber mit AVI-Containern die dem RIFF-Standard folgen funktionieren zumindest tut es das hier mit meinen zur Verfügung stehenden Videos. Das Skript lässt sich natürlich einfach auf andere Tags erweitern wenn man will. Bei Interesse einfach via PN anklingeln.
Grüße Uwe
habe mir das damals selbst mal quick n' dirty mit einem Powershell-Skript geschrieben, es entfernt im diesem Beispiel den Titel des Videos ohne eine Kopie zu erstellen direkt im RIFF-Stream des AVIs:
function Find-ByteSequenceOffset([byte[]]$filebytes,[byte[]]$sequence){
0..($filebytes.Length-1) | %{
if ([System.Linq.Enumerable]::SequenceEqual([byte[]]$sequence, [byte[]]$filebytes[$_..($_ + $sequence.Count-1)])){
return $_
}
}
return $null
}
function Get-MetaDataDetail {
param(
[byte[]]$metadata,
[ValidateSet('INAM','IART','ICOP','IPRD','ICRD','IGNR','ISGN','ISBJ','IKEY','ICMT','IWRI','IPRO','ICNM','IPDS','IEDT','ICDS','IMUS','ISTD','IDST','ICNT','ILNG','IRTD','ISTR','ISFT','ITCH','IENG','IWEB','IDIT','ISMP','ISRF','IMED','ISRC','IARL','ICMS','IPRT','IFRM','ICRP','ISHP','IDIM','ILGT','IDPI','IPLT')][string]$detail
)
[int]$offset_detail = Find-ByteSequenceOffset $metadata ([System.Text.Encoding]::ASCII.GetBytes($detail))
if ($offset_detail -ne $null){
return [System.Text.Encoding]::ASCII.GetString($metadata[($offset_detail+8)..($offset_detail + 7 + [System.BitConverter]::ToInt32(($metadata[($offset_detail+4)..($offset_detail+8)]),0))])
}
}
function Clear-MetaDataDetail {
param(
[byte[]]$metadata,
[ValidateSet('INAM','IART','ICOP','IPRD','ICRD','IGNR','ISGN','ISBJ','IKEY','ICMT','IWRI','IPRO','ICNM','IPDS','IEDT','ICDS','IMUS','ISTD','IDST','ICNT','ILNG','IRTD','ISTR','ISFT','ITCH','IENG','IWEB','IDIT','ISMP','ISRF','IMED','ISRC','IARL','ICMS','IPRT','IFRM','ICRP','ISHP','IDIM','ILGT','IDPI','IPLT')][string]$detail
)
$offset_detail = Find-ByteSequenceOffset $metadata ([System.Text.Encoding]::ASCII.GetBytes($detail))
if ($offset_detail -ne $null){
$dsize = [System.BitConverter]::ToInt32(($metadata[($offset_detail+4)..($offset_detail+8)]),0)
($offset_detail+8)..($offset_detail+7+$dsize) | %{$metadata.Set($_,0)}
}
return $metadata
}
function Clear-AVIMetaData {
param(
[parameter(mandatory=$true,ValueFromPipelineByPropertyName=$true)][alias('Fullname')][string]$filepath
)
begin{
$search = [System.Text.Encoding]::ASCII.GetBytes("LIST")
$search2 = [System.Text.Encoding]::ASCII.GetBytes("INFO")
}
process{
try{
[System.IO.FileStream]$file = [IO.File]::Open($filepath,[System.IO.FileMode]::Open)
$found = $false
$cbuffer = new-object 'Byte' 4
$cbuffer = $search
Do {
$b = $file.ReadByte()
if ($b -ne -1){
if ([char]$b -eq $search){
[void]$file.Read($cbuffer,1,3)
if([System.Linq.Enumerable]::SequenceEqual($buffer,$search)){
$sbuffer = new-object 'Byte' 8
[void]$file.Read($sbuffer,0,8)
if ([System.Linq.Enumerable]::SequenceEqual([byte[]]$sbuffer[4..7],$search2)){
$infostart = $file.position
$infosizebytes = $sbuffer[0..3]
$infosize = [System.BitConverter]::ToInt32($infosizebytes,0) - 4
$infocontent = new-object 'Byte' $infosize
[void]$file.Read($infocontent,0,$infosize)
$found = $true
}
}
}
}
}until($found -or $file.Position -eq -1)
if ($found){
$infocontent_new = Clear-MetaDataDetail $infocontent INAM
if($infocontent_new -ne $null){
write-host "Clearing the metatag 'Title' from '$filepath'." -F Green
[void]$file.Seek($infostart,0)
$file.Write($infocontent_new,0,$infocontent_new.length)
}
}
}catch{
throw $_.Exception.Message
}finally{
$file.Close()
}
}
}
# Titel Tag von allen Videos in D:\Videos inkl. Unterordner entfernen
gci "D:\Videos\*.avi" -file -recurse | Clear-AVIMetaData
Probiers mal aus, ist leider schon etwas länger her, sollte aber mit AVI-Containern die dem RIFF-Standard folgen funktionieren zumindest tut es das hier mit meinen zur Verfügung stehenden Videos. Das Skript lässt sich natürlich einfach auf andere Tags erweitern wenn man will. Bei Interesse einfach via PN anklingeln.
Grüße Uwe
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, und Lösungen markieren. Merci.