Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows FFMPEG-批转换子文件夹_Windows_Batch File_Ffmpeg - Fatal编程技术网

Windows FFMPEG-批转换子文件夹

Windows FFMPEG-批转换子文件夹,windows,batch-file,ffmpeg,Windows,Batch File,Ffmpeg,我正在尝试设置一个Windows批处理文件,以使用FFMPEG转换多个MP4文件。多个子文件夹中有许多文件,因此我需要在每个子文件夹中的每个文件上执行脚本 恐怕我没有太多使用批处理文件的经验,但通过研究,我得到了以下命令文本: FOR %%i in (*.mp4) /R DO (ffmpeg32 -i "%%~ni.mp4" -map 0:0 -map 0:1 -map 0:1 -c:v copy -c:a:0 aac -b:a 128k -ac 2 -strict -2 -cutof

我正在尝试设置一个Windows批处理文件,以使用FFMPEG转换多个MP4文件。多个子文件夹中有许多文件,因此我需要在每个子文件夹中的每个文件上执行脚本

恐怕我没有太多使用批处理文件的经验,但通过研究,我得到了以下命令文本:

FOR %%i in (*.mp4) /R DO (ffmpeg32 -i "%%~ni.mp4" -map 0:0 -map 0:1 -map 0:1    -c:v copy   -c:a:0 aac -b:a 128k -ac 2 -strict -2 -cutoff 15000  -c:a:1 copy "%~ni&(2).mp4")
脚本基本上需要将AAC音频流添加到现有MP4文件中,因此我需要通过在文件名末尾添加(2)来更改输出名称

我已经单独测试了ffmpeg命令,很高兴它能工作——我只需要获得正确的批处理命令

提前感谢您的指点

干杯

试试这个:

@echo off & setlocal
FOR /r %%i in (*.mp4) DO ffmpeg32 -i "%%~fi" -map 0:0 -map 0:1 -map 0:1 -c:v copy -c:a:0 aac -b:a 128k -ac 2 -strict -2 -cutoff 15000 -c:a:1 copy "%%~dpni(2)%%~xi"
此windows批处理(.bat)脚本将从子文件夹(或嵌套目录)中的mp4文件中删除音频,然后删除旧文件。SLEEP命令会减慢速度,因为在linux和linux中复制之前,文件删除显然存在问题

FOR /r %%i in (*.mp4) DO ffmpeg.exe -i  "%%~fi" -vcodec copy -an "%%~dpni(2)%%~xi" &&  sleep 1 &&    del "%%~fi"

谢谢你,伙计,真是太棒了。就我个人的理解而言,“%%~fi”和“%%~dpni”/“%%~xi”在批处理文件中实际做了什么?
%%~f
-->全名(驱动器+路径+文件+外文)、
~dpn
-->drive+路径+文件、
~x
-->扩展名(.MP4),有关更多帮助,请参阅命令行上的
帮助。