如何批量应用多个命令?FFmpeg

如何批量应用多个命令?FFmpeg

我有三个命令,需要单独用于一组视频,但无法将它们一起应用。我需要将这三个命令全部应用于每个视频。

1)添加音频,2)加速整个视频,3)应用文本叠加

我尝试使用“&&”或逗号分隔将不同的行添加在一起,但无法正常工作。批量将多个编辑应用于多个视频的正确方法是什么?我也不确定如何将第一行应用于所有视频。注意:我在 Windows 上使用命令行。

ffmpeg -i audiofile.mp3 -i videofile.mp4 -filter_complex amix=normalize=0:weights="0.02 1" videofileoutput.mp4

for %f in ("folder\*.mp4") do ffmpeg -i "%f" -vf "setpts=(PTS-STARTPTS)/1.5" -af atempo=1.5 "folder\%~nf_suffix.mp4"

for %f in ("folder\*.mp4") do ffmpeg -i "%f" -vf drawtext="fontfile=arial.ttf: text='@texthere': fontcolor=white@1: fontsize=50: x=(w-text_w)/2: y=(h-text_h)/2" "folder\%~nf_suffix.mp4"

答案1

这会将文件夹中的所有视频与相同的音频文件 Audiofile.mp3 混合,将视频和音频速度提高 50%,并在屏幕上应用文本:

for /f "delims=" %f in ('dir /b folder\*.mp4') do ffmpeg -i "%f" -i "Audiofile.mp3" -filter_complex "[0][1]amix=normalize=0:weights='0.02 1'[audio],[0]setpts=(PTS-STARTPTS)/1.5[video];[audio]atempo=1.5[audio];[video][audio]concat=n=1:v=1:a=1[final];[final]drawtext=text='@texthere':font=arial:fontcolor=white@1:fontsize=50:x=(w-text_w)/2:y=(h-text_h)/2[final]" -map [final] "%~nf_suffix%~xf"

要应用批处理脚本并选择随机 mp3 文件:

@echo off

SetLocal EnableDelayedExpansion

set "VideoFolder=C:\Users\Ricardo\Videos"
set "AudioFolder=C:\Users\Ricardo\Music\The Official UK Top 100 (09-11-2023)"

IF NOT EXIST "%VideoFolder%\" exit
IF NOT EXIST "%AudioFolder%\" exit

for /f "delims=" %%a in ('dir /b "%AudioFolder%\*.mp3"') do (
                                                             set /a MaxAudioFiles+=1
                                                             set "Audio[!MaxAudioFiles!]=%%a"
                                                            )

for /f "delims=" %%a in ('dir /b "%VideoFolder%\*.mp4" "%VideoFolder%\*.mkv"') do Call :Mix "%%~a"
exit

:Mix
set /a RandomFile=%random% * (%MaxAudioFiles% - 1 + 1) /32768 + 1 
ffmpeg -i "%VideoFolder%\%~1" -i "%AudioFolder%\!Audio[%RandomFile%]!" -map_metadata -1 -filter_complex ""[0][1]amix=normalize=0:weights='0.02 1'[audio],[0]setpts=(PTS-STARTPTS)/1.5[video];[audio]atempo=1.5[audio];[video][audio]concat=n=1:v=1:a=1[final];[final]drawtext=text='@texthere':font=arial:fontcolor=white@1:fontsize=50:x=(w-text_w)/2:y=(h-text_h)/2[final]" -y "%VideoFolder%\%~n1_mod%~x1"
goto :EOF

相关内容