使用批处理使用ffmpeg一次编码一个文件

时间:2014-10-09 23:25:55

标签: batch-file video ffmpeg

这里的初学者,很可能在某些事情上寻求帮助(希望)很容易实现。

我设置了一个drop文件夹来触发批处理过程,该过程将使用FFMPEG将其中包含的任何视频编码为5种不同的格式。它还会创建一个包含文件名的文本文件,然后我会在单独的php / api进程中将视频上传到互联网。

当只有一个视频被放入drop文件夹时,该过程非常有效。但是,只要有两个或更多,那么该过程就会失效。

以下是批处理文件运行的其中一个ffmpeg脚本的示例:

for %%a in ("C:\live\dropfolder\transcode\*.*") do ffmpeg\ffmpeg -i "%%a" (encoding settings) "C:\live\dropfolder\output\%%~na.mp4"
pause
for %%g in (C:\live\dropfolder\output\*.mp4) do echo %%~nxg > C:\live\dropfolder\filename\filename_format.txt

因此,当有2个或更多文件时,该回显生成的文件名可能是文件A,而转码会话可能是文件B.

理想情况下,我希望整个过程完成第一个视频的转码 - 包括为每种格式生成文本文件 - 然后返回到drop文件夹中下一个视频的流程开始。

我如何实现这一目标?任何建议都将不胜感激。

谢谢!

汤姆

1 个答案:

答案 0 :(得分:0)

尝试这一点,不确定它是否真的是你所追求的......

if exist C:\live\dropfolder\filename\filename_format.txt del C:\live\dropfolder\filename\filename_format.txt
for %%a in ("C:\live\dropfolder\transcode\*.*") do (
    ffmpeg\ffmpeg -i "%%a" (encoding settings) "C:\live\dropfolder\output\%%~na.mp4"
    echo %%~na.mp4 >> C:\live\dropfolder\filename\filename_format.txt
)