【问题标题】:Convert .MOD video files to .mp4 but maintain original file date将 .MOD 视频文件转换为 .mp4 但保持原始文件日期
【发布时间】:2023-04-04 03:15:01
【问题描述】:

Windows 10, ffmpeg

我对 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"

有什么建议吗?谢谢

更新

我用 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
}

【问题讨论】:

    标签: windows powershell video ffmpeg windows-10


    【解决方案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)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-02
      • 2022-11-02
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      • 2020-08-30
      • 2018-11-15
      • 1970-01-01
      相关资源
      最近更新 更多