2016-02-26 115 views
0

的Windows 10, 的ffmpeg.MOD轉換視頻文件的MP4,但保留原始文件的日期

我很新的ffmpeg的,所以我不能想出解決辦法。我試圖使用一個命令來複制,然後將目錄中的所有.MOD視頻文件轉換爲.mp4文件,並保留.MOD文件創建的原始日期。我不明白如何將循環中的當前文件映射到map_metadata選項。此命令的作用,但不能保持(taken from this post)

FOR /F "tokens=*" %G IN ('dir /b *.MOD') DO ffmpeg -i "%G" -acodec copy "%~nG.mp4" 

我試過,包括在上面的命令映射元數據,但得到的各種錯誤,大多是「無效的輸入文件索引:1」下面的命令將複製。並轉換,但新的.mp4文件沒有原始文件的日期,所以我必須使用正確map_metadata

FOR /F "tokens=*" %G IN ('dir /b *.MOD') DO ffmpeg -i "%G" -acodec copy -map_metadata 0 "%~nG.mp4" 

FOR /F "tokens=*" %G IN ('dir /b *.MOD') DO ffmpeg -i "%G" -map_metadata 0 -acodec copy "%~nG.mp4" 

任何建議感謝

UPDATE

我用Powershell得到了這個! (感謝this post

$oldvids = Get-ChildItem *.MOD -Recurse 
foreach ($oldvid in $oldvids) { 
    $newvid = [io.path]::ChangeExtension($oldvid.LastWriteTime.toString("MMMddyyyy_HHmmss"), '.mp4') 
    ffmpeg.exe -i $oldvid.FullName -c:v libx264 -crf 18 -c:a aac -q:a 100 $newvid 
} 

輸入:MOV01E.MOD(創建日期2012/4/1上午10點10分)

輸出:Apr012012_101005.mp4

另一個更新

上述命令的作品類型,但我只是意識到所有的文件都輸出到根目錄。我改變了命令一下,但我不知道這是怎麼回事:

Get-ChildItem *.MOD -recurse | % { 
    $newvid = [io.path]::ChangeExtension($_.LastWriteTime.toString("MMMddyyyy_HHmmss"), '.mp4') 
    ffmpeg.exe -i $_.FullName -c:v libx264 -crf 50 -c:a aac -q:a 100 $newvid 
} 

回答

1

我只需要更改輸出文件包含的目錄路徑

Get-ChildItem *.MOD -recurse | % { 
    $newvid = [io.path]::ChangeExtension($_.LastWriteTime.toString("MMMddyyyy_HHmmss"), '.mp4') 
    ffmpeg.exe -i $_.FullName -c:v libx264 -crf 20 -c:a aac -q:a 100 ($_.DirectoryName + "\" + $newvid) 
} 
相關問題