我已经得到了用于视频处理的代码语句,第一句添加了水印,第二句创建了一个水印视频的.ts文件,然后添加了一个介绍和输出,但是我发现,由于使用了.ts文件,它很快就填满了磁盘空间,有没有办法在没有它们的情况下实现相同的结果?要么在使用它们之后立即删除它们,要么使用完全不同的过程。
for %%I in ("C:\Users\Administrator\Desktop\work\*.mp4") do ffmpeg.exe
-y -i "%%I" -i white.png -filter_complex "[0:v]scale=iw:ih[v0];[1:v][v0]scale2ref=iw/6:ih/18[logo][0v];[0v][logo]overlay=W-w-3:H-h-1[v]"
-map "[v]" -map 0:a -codec:v libx264 -preset ultrafast -crf 23 -codec:a copy "C:\Users\Administrator\Desktop\Complete-videos\%%~nI.mp4"
for %%I in ("C:\Users\Administrator\Desktop\Complete-videos\*.mp4") do ffmpeg -y
-i %%I -c copy -vbsf h264_mp4toannexb -f mpegts -s 1280*720 %%I.ts && ffmpeg -y -i "concat:out1.ts|%%I.ts|out1.ts" -c:v libx264 -strict experimental -bsf:a aac_adtstoasc -ar 48000 -r 20 "C:\Users\Administrator\Desktop\Complete-videos\%%~nI.mp4
pause发布于 2017-04-15 05:34:20
这是在一个命令中完成的,没有中间文件。
for %%I in ("C:\Users\Administrator\Desktop\work\*.mp4") do ffmpeg.exe
-y -i "%%I" -i white.png -i out1.ts -filter_complex "[1:v][0:v]scale2ref=iw/6:ih/18[logo][0v];[0v][logo]overlay=W-w-3:H-h-1,scale=hd720,setsar=1[vl];[2:v][2:a][vl][0:a][2:v][2:a]concat=n=3:v=1:a=1[v][a]"
-map "[v]" -map "[a]" -r 20 -c:v libx264 -ar 48000 "C:\Users\Administrator\Desktop\Complete-videos\%%~nI.mp4"
pause注意:根据out1.ts的位置,您可能必须在输入期间指定它的完整路径。在第一个命令中,在第二步中,当您复制流时,size选项没有任何效果。如果需要调整大小,请在我的命令中的concat过滤器之后插入scale=hd720。如果你的-strict experimental比2015年12月老了,而且你不想升级的话,那就添加-strict experimental吧。
发布于 2017-04-15 04:38:33
完全没有尝试过的建议,因为我不知道ffmpeg行在做什么
我建议您在一个有限制空间的设备上的一个小文件子集上尝试这一点,比如ramdrive或usb驱动器。USB驱动器可能需要一段时间。咖啡很好喝。
for %%I in ("C:\Users\Administrator\Desktop\work\*.mp4") do (
ffmpeg.exe -y -i "%%I" -i white.png -filter_complex "[0:v]scale=iw:ih[v0];[1:v][v0]scale2ref=iw/6:ih/18[logo][0v];[0v][logo]overlay=W-w-3:H-h-1[v]"
-map "[v]" -map 0:a -codec:v libx264 -preset ultrafast -crf 23 -codec:a copy "C:\Users\Administrator\Desktop\Complete-videos\%%~nI.mp4"
for %%Q in ("C:\Users\Administrator\Desktop\Complete-videos\%%~nI.mp4") do ffmpeg -y
-i %%Q -c copy -vbsf h264_mp4toannexb -f mpegts -s 1280*720 %%Q.ts && ffmpeg -y -i "concat:out1.ts|%%I.ts|out1.ts" -c:v libx264 -strict experimental -bsf:a aac_adtstoasc -ar 48000 -r 20 "C:\Users\Administrator\Desktop\Complete-videos\%%~nQ.mp4
del *.ts
)
pause这样,使用%%I的第一个循环选择要处理的文件,显然将处理的文件放在另一个目录中,然后立即对该文件执行第二个进程,由%%Q控制,使用%%~nI中的名称来选择由前一个进程创建的单个文件。
因此,没有处理每个文件都有自己的.ts集,而是一次处理一个文件,只创建一个.ts集。我不知道第二个进程是否删除了.ts文件,但是我在每个循环中都添加了一个del来删除它们。我也不知道第一个进程是否创建了.ts文件,但我已经做出了这样的假设。
正如教育家所说的“新数学”--重要的是这个想法。
https://stackoverflow.com/questions/43420670
复制相似问题