ffmpeg-转码脚本详解
高级脚本 | 以下为主要部分 更高级优化要见git上 |
mkv转码电影脚本 | @ECHO OFF REM 以下参数不可乱填 SET FFMPEG=%~DP0\ffmpeg.exe ::------------------------------------------------------------------------------ CALL:PRO_LOOPDIR ::CALL:PRO_LOOPDIR_SUB GOTO EOF ::------------------------------------------------------------------------------ :FUN_CHECKFFMPEG IF NOT EXIST "%FFMPEG%" ( ECHO "ffmpeg.exe not find!"&pause EXIT) GOTO EOF :FUN_VIDEO %FFMPEG% -i %1 -vcodec libx265 -y %2 GOTO EOF :FUN_VIDEO_SUB SET STIME=-ss 00:00:07 -t 00:00:30 SET SVIDEO_CP=-map 0:v -vcodec copy SET SVIDEO=-map 0:v:0 -vcodec libx265 SET SAUDIO_CP=-map 0:a -acodec copy SET SAUDIO=-map 0:a -acodec aac -b:a:0 512k -map 0:a:1 -acodec aac -b:a 512k SET SUB=-map 0:s -scodec copy ::%FFMPEG% %STIME% -i %1 %SVIDEO% %SAUDIOAAC% %SUB% -y %2 %FFMPEG% -i %1 %SVIDEO% %SAUDIO_CP% %SUB% -y %2 GOTO EOF :PRO_LOOPDIR REM 遍历文件夹处理为H265 CALL:FUN_CHECKFFMPEG @FOR /F "DELIMS=" %%I IN ('@DIR /B /A-D /S "*.mp4"') DO (CALL:FUN_VIDEO "%%I" "%~DP0%%~NI_265%%~XI") ECHO "CONVERT END!" TIMEOUT 6 GOTO EOF :PRO_LOOPDIR_SUB CALL:FUN_CHECKFFMPEG REM 遍历文件夹处理含字幕的mkv @FOR /F "DELIMS=" %%I IN ('@DIR /B /A-D /S "*.mkv"') DO (CALL:FUN_VIDEO_SUB "%%I" "%~DP0%%~NI_265%%~XI") ECHO "CONVERT END!" TIMEOUT 6 GOTO EOF :EOF |
转码S60脚本 | @ECHO OFF CHCP 65001 REM 以下参数不可乱填 SET FFMPEG=%~DP0\ffmpeg.exe ::------------------------------------------------------------------------------ CALL:PRO_SYMIAN_VIDEO GOTO EOF ::------------------------------------------------------------------------------ :FUN_VIDEO REM 下面是把MP4文件转为S60专用的MPEG文件 mpeg4+aac SET INPUT=%1 SET OUTPUT=%2 SET CODEC=-f mp4 -c:v mpeg4 SET XY=-vf "scale=640:480:flags=fast_bilinear,setsar=1/1" SET SIZE=-b:v 280k -c:a aac -ac 2 -b:a 64k -r 15 -sn -map_metadata -1 -map_chapters -1 %FFMPEG% -i %INPUT% %XY% %CODEC% %SIZE% -y %OUTPUT% GOTO EOF :FUN_HIGHVIDEO REM 下面是把MP4文件转为S60支持的H264文件 H264+aac SET INPUT=%1 SET OUTPUT=%2 SET CODEC264=-f mp4 -c:v libx264 SET CODECXVID=-f mp4 -c:v libxvid SET XY=-vf "scale=640:480:flags=bicubic,setsar=1/1" SET SIZE=-b:v 280k -c:a libmp3lame -ac 2 -b:a 64k -r 15 -sn -map_metadata -1 -map_chapters -1 SET X264INFO=-profile:v baseline -preset veryfast %FFMPEG% -i %INPUT% %XY% %CODEC264% %SIZE% %X264INFO% -y %OUTPUT% ::%FFMPEG% -i %INPUT% %XY% %CODECXVID% %SIZE% -y %OUTPUT% GOTO EOF :TEST_VIDEO_COMPARE REM S60v3 视频转码各格式对比测试 REM libx264>libxvid(mp4)>mpeg4(3pg)>mpeg4(mp4)>libxvid(avi)>mpeg4(avi)>msmpeg4(avi) SET XY=-vf "scale=640:480:flags=bicubic,setsar=1/1" SET SIZE=-b:v 300k -c:a aac -ac 2 -b:a 64k -r 15 -sn -map_metadata -1 -map_chapters -1 SET X264INFO=-profile:v baseline -preset veryfast FOR /F "DELIMS=" %%I IN ('DIR /B /A-D /S "*.MP4"') DO ( %FFMPEG% -i "%%I" %XY% -f mp4 -c:v libx264 %SIZE% %X264INFO% -y "%~D0%%~PI%%~NI_libx264.mp4" %FFMPEG% -i "%%I" %XY% -f mp4 -c:v libxvid %SIZE% -y "%~D0%%~PI%%~NI_libxvid.mp4" %FFMPEG% -i "%%I" %XY% -f mp4 -c:v mpeg4 %SIZE% -y "%~D0%%~PI%%~NI_mpeg4.mp4" %FFMPEG% -i "%%I" %XY% -f avi -c:v libxvid %SIZE% -y "%~D0%%~PI%%~NI_libxvid.avi" %FFMPEG% -i "%%I" %XY% -f avi -c:v mpeg4 %SIZE% -y "%~D0%%~PI%%~NI_mpeg4.avi" %FFMPEG% -i "%%I" %XY% -f avi -c:v msmpeg4 %SIZE% -y "%~D0%%~PI%%~NI_DIV3.avi" %FFMPEG% -i "%%I" %XY% -f 3gp -c:v mpeg4 %SIZE% -y "%~D0%%~PI%%~NI_3gp.3gp") GOTO EOF :PRO_SYMIAN_VIDEO FOR /F "DELIMS=" %%I IN ('DIR /B /A-D /S "*.MP4"') DO (CALL:FUN_VIDEO "%%I" "%~D0%%~PI%%~NI_mpeg.mp4") ::FOR /F "DELIMS=" %%I IN ('DIR /B /A-D /S "*.MP4"') DO (CALL:FUN_HIGHVIDEO "%%I" "%~D0%%~PI%%~NI_h264.mp4") GOTO EOF :EOF |