FFmpeg脚本
脚本基于Windows10系统设计
查看软件版本
1D:\ffmpeg\bin>ver
2
3Microsoft Windows [版本 10.0.18362.356]
4
5D:\ffmpeg\bin>ffmpeg.exe -version
6
7ffmpeg version N-94600-g661a9b274b Copyright (c) 2000-2019 the FFmpeg developers
8built with gcc 9.1.1 (GCC) 20190807
9configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-li
10bfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr
11 --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma
12--enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx
13 --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
14libavutil 56. 33.100 / 56. 33.100
15libavcodec 58. 55.100 / 58. 55.100
16libavformat 58. 31.101 / 58. 31.101
17libavdevice 58. 9.100 / 58. 9.100
18libavfilter 7. 58.100 / 7. 58.100
19libswscale 5. 6.100 / 5. 6.100
20libswresample 3. 6.100 / 3. 6.100
21libpostproc 55. 6.100 / 55. 6.100
添加LOGO
1D:\ffmpeg\bin\ffmpeg ^
2 -c:v h264_qsv ^
3 -i %1 ^
4 -i F:\\电教馆\\logo.png ^
5 -c:v h264_qsv ^
6 -b:v 1894k ^
7 -filter_complex [1:v]scale=125:125[logo];[0:v][logo]overlay=30:25 ^
8 -c:a copy ^
9 -y ^
10 %2
去掉LOGO
1D:\ffmpeg\bin\ffmpeg ^
2 -c:v h264_qsv ^
3 -i %1 ^
4 -c:v h264_qsv ^
5 -b:v 1894k ^
6 -filter_complex [0:v]split[split_main][split_delogo];[split_delogo]trim=start=1:end=5,delogo=x=270:y=820:w=1420:h=50:show=0[delogoed];[split_main][delogoed]overlay=eof_action=pass ^
7 -c:a copy ^
8 -y ^
9 %2
合并操作
1D:\ffmpeg\bin\ffmpeg ^
2 -c:v h264_qsv ^
3 -i %1 ^
4 -i F:\\电教馆\\logo.png ^
5 -c:v h264_qsv ^
6 -b:v 1894k ^
7 -filter_complex [1:v]scale=125:125[logo];[0:v][logo]overlay=30:25[tmp_video];[tmp_video]split[main][delogo];[delogo]trim=start=1:end=5,delogo=x=270:y=820:w=1420:h=50:show=0[delogoed];[main][delogoed]overlay=eof_action=pass ^
8 -c:a copy ^
9 -y ^
10 %2
遍历文件夹下的MP4文件,打水印、去字幕、截图验证效果
1@echo off & setlocal enabledelayedexpansion
2
3echo #################################################
4echo 开始处理视频文件
5echo.
6:: 指定起始文件夹
7set DIR="E:\六年级\"
8REM set DIR="E:\六年级\第一学期\sx6s01001\"
9echo DIR=%DIR%
10
11REM 指定运行参数
12set scale="scale=90:90"
13set overlay="overlay=50:15"
14set trim="trim=start=2:end=6"
15set delogo="delogo=x=190:y=545:w=930:h=30:show=0"
16
17:: 参数 /R 表示需要遍历子文件夹,去掉表示不遍历子文件夹
18:: %%f 是一个变量,类似于迭代器,但是这个变量只能由一个字母组成,前面带上%%
19:: 括号中是通配符,可以指定后缀名,*.*表示所有文件
20for /R %DIR% %%f in (*.mp4) do (
21 echo f=%%f
22 call :check_info "%%f" ^
23 && echo ################################################# ^
24 && echo bit_rate=!bit_rate! ^
25 && call :process_mpeg4 "%%f","%%~df%%~pf%%~nf_out%%~xf",!bit_rate!,%scale%,%overlay%,%trim%,%delogo% ^
26 && call :screenshot "%%~df%%~pf%%~nf_out%%~xf","%%~df%%~pf%%~nf_out"
27)
28exit /b
29
30:check_info
31 echo #################################################
32 echo check_info
33 for /F %%s in ('D:\ffmpeg\bin\ffprobe -hide_banner ^
34 -unit -prefix -byte_binary_prefix ^
35 -print_format flat ^
36 -show_format -show_streams ^
37 -i %1 ^| find "streams.stream.0.bit_rate"') do (set bit_rate=%%s)
38 set bit_rate=%bit_rate:~27,5%
39 set bit_rate=%bit_rate:.=%
40goto :eof
41
42:process_mpeg4
43 echo #################################################
44 echo process_mpeg4
45 D:\ffmpeg\bin\ffmpeg -hide_banner ^
46 -vcodec mpeg4 ^
47 -i %1 -i F:\\电教馆\\logo.png ^
48 -vcodec h264_qsv -b:v %3k ^
49 -filter_complex [1:v]%4[logo];[0:v][logo]%5[tmp_video];[tmp_video]split[main][delogo];[delogo]%6,%7[delogoed];[main][delogoed]overlay=eof_action=pass ^
50 -acodec copy ^
51 -y %2
52goto :eof
53
54:process_h264_qsv
55 echo #################################################
56 echo process_h264_qsv
57 D:\ffmpeg\bin\ffmpeg -hide_banner ^
58 -vcodec h264_qsv ^
59 -i %1 -i F:\\电教馆\\logo.png ^
60 -vcodec h264_qsv -b:v %3k ^
61 -filter_complex [1:v]%4[logo];[0:v][logo]%5[tmp_video];[tmp_video]split[main][delogo];[delogo]%6,%7[delogoed];[main][delogoed]overlay=eof_action=pass ^
62 -acodec copy ^
63 -y %2
64goto :eof
65
66:screenshot
67 echo #################################################
68 echo screenshot
69 for /L %%i in (3,1,5) do (
70 D:\ffmpeg\bin\ffmpeg -hide_banner ^
71 -ss 00:0%%i -vcodec h264_qsv ^
72 -i %1 ^
73 -vframes 1 -f image2 ^
74 -y %2_%%is_screenshot.jpg
75 )
76goto :eof