我正在重新转换我的旧文件,并使用以下代码将元数据从旧文件复制到新文件:
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"
但是,这不会复制文件系统元数据(例如修改日期)。有什么方法可以复制该元数据吗?有什么建议吗?
谢谢。
PS:我用的是 Windows 10
答案1
复制 ffmpeg 的元数据是与视频相关的数据。修改日期是文件的一个属性,由 Windows 管理,而不是由 ffmpeg 管理。
如果您已将文件从文件夹转换C:\dirsource
为文件夹D:\dirtarget
,则以下 PowerShell 脚本会将修改日期从源复制到目标:
Get-ChildItem "C:\dirtarget\" *.mp4 | ForEach-Object {
$_.LastWriteTime = (Get-Item ("C:\dirsource\"+$_.Name)).LastWriteTime
}
您也可以对属性CreationTime
和执行相同操作LastAccessTime
。
创建一个名为的文件myname.ps1
并复制上述文本。启动 PowerShell 会话,使用cd
定位到包含脚本的文件夹,然后运行命令.\myname.ps1
。
如果收到错误消息“无法加载,因为此系统上已禁用运行脚本”,请在 PowerShell 窗口中运行以下命令,然后重复上述操作:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted