记录一些批处理
以供查询与使用
- 提取YUV的第15帧
DownConvertStatic.exe win hin %in_file_name% wout hout %out_file_name% 0 0 14 1
- for 循环对YUV下采样,并264编码
set bitrate=(200,500,800,1500,3000)
set bitrate2=(200,500,800,1500,3000)
set target_resolution=720x360
set width=720
set height=360
rem 对文件名在filename1中30fps的文件YUV进行采样至目标分辨率
for %%a in %file_name1% do (for %%b in %bitrate% do (
if not exist %yuv_out%\%%a_sample_%target_resolution%.yuv (ffmpeg -s %initial_resolution% -i %yuv_in%\%%a.yuv -s %target_resolution% %yuv_out%\%%a_sample_%target_resolution%.yuv)
x264.exe -I 30 -i 30 --ref 1 --qpstep 2 --profile baseline --bitrate %%b --vbv-maxrate %%b --vbv-bufsize %%b --vbv-init 0.9 -m 1 --threads 1 --fps %fps1% -o %yuv_out%\%%a_%target_resolution%_%%brat_%fps1%fr.264 %yuv_out%\%%a_sample_%target_resolution%.yuv --input-res %target_resolution% ))
::del %yuv_out%\*.264
::del %yuv_out%\*.yuv
- 实验室常用
%%视频截取之后,后面的出来可以不用再截取
set MP4_in=E:\liwenrong_360Sequence\3840_1920\30\select
set yuv_in=E:\liwenrong_360Sequence\3840_1920\30\select\sample
set yuv_out=E:\liwenrong_360Sequence\3840_1920\30\select\sample\2k_2160_1080
set file_name=(prideforeveryone,Esporte_Atitude,danceGFriendRough,GearVRGiveaway)
set bit_rate_1=(3000,3500,4500,5000,7000,9000,10000,11000)
set frame_rate=(30)
set initial_solution=(3840x1920)
set sample_solution=(720x360)
%下采样
for %%a in %file_name% do (ffmpeg -s 3840x1920 -i %yuv_in%\%%a.yuv -s 720x360 %yuv_out%\%%a_sample.yuv)
%yuv按目标码率变成*.264文件
for %%a in %file_name% do (for %%b in %bit_rate_1% do (for %%c in %frame_rate% do x264.exe -I 30 -i 30 --ref 1 --qpstep 2 --profile baseline --bitrate %%b --vbv-maxrate %%b --vbv-bufsize %%b --vbv-init 0.9 -m 1 --threads 1 --fps %%c -o %yuv_out%\%%a_%%brat_%%cfr.264 %yuv_out%\%%a_sample.yuv --input-res 720x360))
% *.264文件封装成 *.MP4文件
for %%a in %file_name% do (for %%b in %bit_rate_1% do (for %%c in %frame_rate% do ffmpeg -i %yuv_out%\%%a_%%brat_%%cfr.264 -vcodec copy %yuv_out%\%%a_%%brat_%%cfr.mp4 ))
%删除yuv文件
%for %%a in %file_name% do (del %yuv_in%\%%a.yuv)
%删除 *.264文件
for %%a in %file_name% do (for %%b in %bit_rate_1% do (for %%c in %frame_rate% do del %yuv_out%\%%a_%%brat_%%cfr.264))
cmd
%截取视频
%for %%a in %file_name% do (ffmpeg.exe -i %MP4_in%\%%a.mp4 -ss 00:01:03 -t 00:00:30 -vcodec copy -acodec copy -y %yuv_in%\%%a.mp4 )
%转yuv
%for %%a in %file_name% do (ffmpeg -i %yuv_in%\%%a.mp4 %yuv_in%\%%a.yuv)
- 另一种不错的 for 循环
@echo off
set video_in=E:\liwenrong_360Sequence\selected_video\sample\3840_1920
for %%a in (%video_in%\dance*.mp4) do (ffmpeg -i %%a -i 1.aac -vcodec copy -acodec copy %video_in%\%%~na.ts)
for %%a in (%video_in%\Gear*.mp4) do (ffmpeg -i %%a -i 2.aac -vcodec copy -acodec copy %video_in%\%%~na.ts)
for %%a in (%video_in%\pride*.mp4) do (ffmpeg -i %%a -i 3.aac -vcodec copy -acodec copy %video_in%\%%~na.ts)
for %%a in (%video_in%\Green*.mp4) do (ffmpeg -i %%a -i 4.aac -vcodec copy -acodec copy %video_in%\%%~na.ts)
for %%a in (%video_in%\Esporte*.mp4) do (ffmpeg -i %%a -i 5.aac -vcodec copy -acodec copy %video_in%\%%~na.ts)
for %%a in (%video_in%\Hollywood*.mp4) do (ffmpeg -i %%a -i 6.aac -vcodec copy -acodec copy %video_in%\%%~na.ts)
rem: ~na 的作用是去掉 %%a 中文件的格式,即 .yuv
- for 循环,用到 if not exist 和 ==
@echo off
set yuv_in=E:\liwenrong_360Sequence\selected_video\sample
set file_name1=(danceGFriendRough,GearVRGiveaway,prideforeveryone,GreenIsland)
set fps1=30
set file_name2=(Esporte_Atitude,Hollywood_Rip_Ride_Rockit)
set fps2=25
set initial_resolution=3840x1920
rem Only the following parameters needed to be changed between different resolutions.
set yuv_out=E:\liwenrong_360Sequence\selected_video\sample\3840_1920
set bitrate=(2000,5000,10000,18000,28000)
set target_resolution=3840x1920
set width=3840
set height=1920
rem 对文件名在filename1中的文件YUV进行采样至目标分辨率
for %%a in %file_name1% do (for %%b in %bitrate% do (
if not exist %yuv_out%\%%a_sample_%target_resolution%.yuv (ffmpeg -s %initial_resolution% -i %yuv_in%\%%a.yuv -s %target_resolution% %yuv_out%\%%a_sample_%target_resolution%.yuv)
x264.exe -I 30 -i 30 --ref 1 --qpstep 2 --profile baseline --bitrate %%b --vbv-maxrate %%b --vbv-bufsize %%b --vbv-init 0.9 -m 1 --threads 1 --fps %fps1% -o %yuv_out%\%%a_%%brat_%fps1%fr.264 %yuv_out%\%%a_sample_%target_resolution%.yuv --input-res %target_resolution%
ffmpeg -i %yuv_out%\%%a_%%brat_%fps1%fr.264 -vcodec copy %yuv_out%\%%a_%target_resolution%_%%brat_%fps1%fr.mp4)
del %yuv_out%\*.264
del %yuv_out%\*.yuv)
rem 由于文件名filename2中文件的YUV无法采用ffmpeg下采样,故用DownConvertStatic.exe完成
for %%c in %file_name2% do ( for %%d in %bitrate% do (
if not exist %yuv_out%\%%c_sample_%width%x%height%.yuv ( DownConvertStatic.exe 3840 1920 %yuv_in%\%%c.yuv %width% %height% %yuv_out%\%%c_sample_%width%x%height%.yuv )
if %%c==Esporte_Atitude (
x264.exe -I 30 -i 30 --ref 1 --qpstep 2 --profile baseline --bitrate %%d --vbv-maxrate %%d --vbv-bufsize %%d --vbv-init 0.9 -m 1 --threads 1 --fps %fps1% -o %yuv_out%\%%c_%%drat_%fps1%fr.264 %yuv_out%\%%c_sample_%width%x%height%.yuv --input-res %target_resolution%
ffmpeg -i %yuv_out%\%%c_%%drat_%fps1%fr.264 -vcodec copy %yuv_out%\%%c_%target_resolution%_%%drat_%fps1%fr.mp4) else (
x264.exe -I 25 -i 25 --ref 1 --qpstep 2 --profile baseline --bitrate %%d --vbv-maxrate %%d --vbv-bufsize %%d --vbv-init 0.9 -m 1 --threads 1 --fps %fps2% -o %yuv_out%\%%c_%%drat_%fps2%fr.264 %yuv_out%\%%c_sample_%width%x%height%.yuv --input-res %target_resolution%
ffmpeg -i %yuv_out%\%%c_%%drat_%fps2%fr.264 -vcodec copy %yuv_out%\%%c_%target_resolution%_%%drat_%fps2%fr.mp4))
del %yuv_out%\*.264
del %yuv_out%\*.yuv)
- 超级 for 循环
set in_out_dir=E:\liwenrong_360Sequence\selected_video\sample\720_360\test_mp4tots
for /r %in_out_dir% %%i in (*.mp4) do ( ffmpeg -i %%i -vcodec copy %in_out_dir%\%%~ni.ts)
- 超级 for 循环2
rem Only the following parameters needed to be changed between different resolutions.
set in_out_dir=E:\liwenrong_360Sequence\selected_video\sample\720_360
rem 先将目录里的 .mp4文件存到 name.txt 中
dir /b/ob %in_out_dir%\*.mp4 > %in_out_dir%\name.txt
for /F %%i in (%in_out_dir%\name.txt) do ( ffmpeg -i %in_out_dir%\%%i -vcodec copy %in_out_dir%\%%~ni.ts)