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
 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
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