ffmpeg软件编码转换和切片的批量处理的bat脚本

ffmpeg软件编码转换和切片的批量处理的bat脚本

  之前没有写过bat脚本,学习了半个小时,感觉跟shell功能都一样,大同小异。

  FOR命令中有一些变量,他们的用法许多新手朋友还不太了解,今天给大家讲解他们的用法!

先把FOR的变量全部列出来:
      ~I            - 删除任何引号("),扩展 %I
      %~fI          - 将 %I 扩展到一个完全合格的路径名
      %~dI          - 仅将 %I 扩展到一个驱动器号
      %~pI          - 仅将 %I 扩展到一个路径
      %~nI          - 仅将 %I 扩展到一个文件名
      %~xI          - 仅将 %I 扩展到一个文件扩展名
      %~sI          - 扩展的路径只含有短名
      %~aI          - 将 %I 扩展到文件的文件属性
      %~tI          - 将 %I 扩展到文件的日期/时间
      %~zI          - 将 %I 扩展到文件的大小
      %~$PATH:I     - 查找列在路径环境变量的目录,并将 %I 扩展
                    到找到的第一个完全合格的名称。如果环境变量名
                    未被定义,或者没有找到文件,此组合键会扩展到
                    空字符串

 

set  ffmpeg_dir=D:ffmpegffmpegin
set  video_dir=D:ffmpeg 101

::set /p video_dir=请输入视频所在的完整路径:
::set /p complete_dir=请输入视频处理后的路径:





::转换video_dir目录下所有MP4的文件到指定的complete_dir目录下
for %%i in (%video_dir%*.mp4) do (

::m编码
::判断文件夹是否存在,不存在创建
if exist %video_dir%%%~nim (echo "已经存在文件夹") else ( md %video_dir%%%~nim )
%ffmpeg_dir%ffmpeg.exe -i %%i  -b 384k -s 1280*720 -ab 64k -ar 22050 -vcodec libx264 -strict -2 %video_dir%%%~nim%%~nim%%~xi
%ffmpeg_dir%ffmpeg.exe -i %video_dir%%%~nim\%%~nim%%~xi -c:v copy -c:a copy -f segment -segment_list %video_dir%%%~nim\%%~nim.m3u8 -segment_time 10 %video_dir%%%~nim\%%~nim_%%03d.ts

::h编码
if exist %video_dir%%%~nih (echo "已经存在文件夹") else ( md %video_dir%%%~nih )
%ffmpeg_dir%ffmpeg.exe -i %%i  -b 384k -s 1280*720 -ab 64k -ar 22050 -vcodec libx264 -strict -2 %video_dir%%%~nih%%~nih%%~xi
%ffmpeg_dir%ffmpeg.exe -i %video_dir%%%~nih\%%~nih%%~xi -c:v copy -c:a copy -f segment -segment_list %video_dir%%%~nih\%%~nih.m3u8 -segment_time 10 %video_dir%%%~nih\%%~nih_%%03d.ts

::g编码
if exist %video_dir%%%~nig (echo "已经存在文件夹") else ( md %video_dir%%%~nig )
%ffmpeg_dir%ffmpeg.exe -i %%i  -b 384k -s 1280*720 -ab 64k -ar 22050 -vcodec libx264 -strict -2 %video_dir%%%~nig%%~nig%%~xi
%ffmpeg_dir%ffmpeg.exe -i %video_dir%%%~nig\%%~nig%%~xi -c:v copy -c:a copy -f segment -segment_list %video_dir%%%~nig\%%~nig.m3u8 -segment_time 10 %video_dir%%%~nig\%%~nig_%%03d.ts

)

pause