PowerShell — Изменение метаданных MP4 (щелкните свойства правой кнопкой мыши)

#windows #powershell #mp4 #exiftool #microsoft-file-explorer

#Windows #powershell #МР4 #exiftool #microsoft-file-explorer

Вопрос:

Я пытался найти способ отредактировать раздел «Теги», заменив его разделом «Заголовок» для MP4.

Проблема в том, что я не могу сделать это с помощью ExiftTool, MP3Tag, MediaMonkey, и это кошмар, пытаться вручную щелкнуть правой кнопкой мыши и изменить теги для каждого отдельного файла.

Пример свойств файла

Ближе всего мне подошло приложение под названием MP4 Video amp; Auto Tag Editor, поскольку оно позволяет редактировать Microsoft Xtra Atoms, но alas…it у него нет способа сделать это для всего каталога

Я нашел этот скрипт PowerShell, и он показывает все метаданные.

Однако я не знаю, как точно отредактировать раздел «Теги», чтобы на самом деле настраивать и обменивать значения. Я знаю, что ExiftTool может только «читать», а не «писать», поэтому я больше всего боюсь, что столкнусь с той же проблемой.

SRCDIRECTORY представляет каталог, который я использую…

 Function Get-MP3MetaData 
{ 
    [CmdletBinding()] 
    [Alias()] 
    [OutputType([Psobject])] 
    Param 
    ( 
        [String] [Parameter(Mandatory=$true, ValueFromPipeline=$true)] $Directory 
    ) 
 
    Begin 
    { 
        $shell = New-Object -ComObject "Shell.Application" 
    } 
    Process 
    { 
 
        Foreach($Dir in $Directory) 
        { 
            $ObjDir = $shell.NameSpace($Dir) 
            $Files = gci $Dir| ?{$_.Extension -in '.mp3','.mp4'} 
 
            Foreach($File in $Files) 
            { 
                $ObjFile = $ObjDir.parsename($File.Name) 
                $MetaData = @{} 
                $MP3 = ($ObjDir.Items()|?{$_.path -like "*.mp3" -or $_.path -like "*.mp4"}) 
                $PropertArray = 0,1,2,12,13,14,15,16,17,18,19,20,21,22,27,28,36,220,223 
             
                Foreach($item in $PropertArray) 
                {  
                    If($ObjDir.GetDetailsOf($ObjFile, $item)) #To avoid empty values 
                    { 
                        $MetaData[$($ObjDir.GetDetailsOf($MP3,$item))] = $ObjDir.GetDetailsOf($ObjFile, $item) 
                    } 
                  
                } 
             
                New-Object psobject -Property $MetaData |select *, @{n="Directory";e={$Dir}}, @{n="Fullname";e={Join-Path $Dir $File.Name -Resolve}}, @{n="Extension";e={$File.Extension}} 
            } 
        } 
    } 
    End 
    { 
    } 
} 


ForEach($item in ("SRCDIRECTORY" |Get-MP3MetaData)){ 
    $itemTitle = $item.Title 
    $itemTags = $item.Tags
}
 

Комментарии:

1. Вы можете попробовать ffmpeg с помощью switch -metadata .

2. @Тео, я не верю, что ffmpeg может редактировать атомы Microsoft Xtra.

3. После поиска в Google и игры с exiftool и ffmpeg , могу подтвердить, ни один из них не будет работать. exiftool может записывать в тег категории … только не в Microsoft:Category тег. Я также не смог найти никаких библиотек программирования или чего-либо, что могло бы работать.

4. То же самое… Я только что попытался использовать TagLib, и даже тогда он не позволяет мне обновлять эту информацию. На самом деле, это вообще ничего не показывает. Единственное, что было близко к тому, чтобы делать то, что я хочу, — это приложение под названием MP4 Video amp; Auto Tag Editor, но не позволяло редактировать каждый файл сразу.