我用这个批处理在Win7中切断了一堆mp4文件的开始6秒,创建了新文件。效果很好,但是输出文件的日期是新的。如何保持原始日期?但是我不想重新编码mp4文件,它们太多了,太慢了。感谢任何回应。
对于(“ * .mp4”)中的%% a,请执行ffmpeg -i“ %% a” -ss 6 -vcodec复制-acodec复制“ newfiles \ %%〜na.mp4”
答案 0 :(得分:0)
感谢您的帮助,@ mayudong,但我对powershell一无所知,也无法理解。最终,我通过AHK达成了协议:
SetWorkingDir g:\
#m::
Loop, %A_WorkingDir%\*.mp4
{
if( InStr(A_LoopFileName,"news")=1 or InStr(A_LoopFileName,"today")=1 ){
FileGetTime,mt,% A_LoopFileLongPath
runwait,ffmpeg -y -i "%A_LoopFileLongPath%" -ss 8 -vcodec copy -acodec copy "g:\+temp\%A_LoopFileName%"
FileSetTime,mt,g:\+temp\%A_LoopFileName%
}
}
return
答案 1 :(得分:0)
您可以使用 powershell
更改文件日期:
powershell (ls 'out.mp4').CreationTime = (ls 'in.mkv').CreationTime
powershell (ls 'out.mp4').LastWriteTime = (ls 'in.mkv').LastWriteTime
powershell (ls 'out.mp4').LastAccessTime = (ls 'in.mkv').LastAccessTime
在你的情况下,它看起来像这样:
for %%a in ("*.mp4") do (
ffmpeg -i "%%a" -ss 6 -vcodec copy -acodec copy "newfiles\%%~na.mp4"
powershell ^(ls 'newfiles\%%~na.mp4'^).CreationTime = ^(ls ''%%a'^).CreationTime
powershell ^(ls 'newfiles\%%~na.mp4'^).LastWriteTime = ^(ls '%%a'^).LastWriteTime
powershell ^(ls 'newfiles\%%~na.mp4'^).LastAccessTime = ^(ls '%%a'^).LastAccessTime
)