我想创建一个脚本,它会将它在一个文件夹(也扫描子文件夹)内检测到的任何视频文件转换为相同名称的.avi文件, ,然后删除原始文件。我并没有真正使用cmd来编写任何程序/脚本,所以我踌躇着我所怀疑的是一些非常简单的语法问题。创建一个递归ffmpeg转换器
如果有人熟悉编码和ffmpeg,请指出编码选项是否错误(我现在在黑暗中磕磕绊绊)。
使用this thread,我的东西目前类似工作:
dir/b/s *.(mkv|mp4|m4v|wmv) >listing.txt #Make a list of all the files with certain extensions, for reading.
for /F "delims=;" %%F in (listing.txt) do ffmpeg.exe -i "%%F" -c:v libx264 -preset slow -crf 20 -c:a libvo_aacenc -b:a 128k "%%~na.avi"
#Then to delete original files
for /F "delims=;" %%F in (listing.txt) do del %%F
del listing.txt
的第一个问题我是,我希望能够与所有常见的视频类型来填充列表。我在想象cmd有一些类似于perl字符串匹配的语法,例如A(B|C)
会匹配AB和AC,我可以模仿匹配任何视频文件扩展名? (我已经在上面的代码中写了它来说明这一点,但我知道它不起作用)。
我希望这足以试图说明我在尝试什么。
为什么AVI而不是像H.264这样常用的更现代的容器格式如MP4?另外,原生FFmpeg AAC编码器('-c:aac-strict experimental')在128k时可能比'libvo_aacenc'好。 – LordNeckbeard 2014-11-23 21:05:27
纯粹是因为我想要将这些文件可靠地传输到其他设备(即X360),并且它不播放mp4的所有编码变体,但不包含avi - 至少在我过去的经验中。 – 2014-11-23 21:18:19