ffmpeg 滤镜的使用

1.我们选用单个命令

这面 -hwaccel auto,-threads auto,-preset ultrafast,-y都是为加速视频解析!

第一步去音频在截取

ffmpeg -ss 0 -t 283 -i a.mp4 -an -codec copy -crf 18 -y output_video.mp4 

第二步音乐自增长截取

ffmpeg -hwaccel auto -i b.mp3 -i b.mp3 -threads auto -filter_complex concat=n=2:v=0:a=1 -ss 0 -t 283 -gpu 1 -preset ultrafast -y output_audio.mp3

第三步视频音乐音频融合,调节音量

ffmpeg -hwaccel auto -i output_video.mp4 -i output_audio.mp3 -i c.wav -threads auto -filter_complex [1:a]volume=0.100[a1];[2:a]volume=2.000[a2];[a1][a2]amix=inputs=2:duration=longest[a] -map 0:v -map [a] -c:v copy -preset ultrafast -c:a aac -gpu 1 -y output2_video.mp4

第四步图片设置居中标题

ffmpeg -hwaccel auto -i f.png -threads auto -vf drawtext=textfile='d.txt':fontcolor=yellow:fontsize=70:fontfile='7.ttf':x=(W-text_w)/2:y=(H-text_h)/2:shadowx=2:shadowy=2:shadowcolor=black -gpu 1 -preset ultrafast -y output_image.jpg

第五步视频设置封面

ffmpeg -i a.mp4 -i output_image.jpg -map 1 -map 0 -c copy -disposition:0 attached_pic -y test_output.mp4

第六步得到视频长宽

ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 a.mp4

第七步调整图片长宽与视频保持一致

ffmpeg -i output_image.jpg -vf scale=716:1276,setdar=4:3 -strict -2 -y output_image2.jpg

第八步视频设置封面

ffmpeg -hwaccel auto -i output2_video.mp4 -i output_image2.jpg -threads auto -filter_complex [0:v][1:v]overlay=0:0:enable='eq(n,0)' -gpu 1 -preset ultrafast -y result.mp4

这里第五步和第八步,都是加封面,只是意义不一样

2 合并命令,使用滤镜

这里假设我得到了音频的时间283

13命令和在一起

ffmpeg -hwaccel auto -i a.mp4 -i output_audio.mp3 -i c.wav -threads 
auto -filter_complex "[0:v]trim=start=0:end=274,setpts=PTS-
STARTPTS[v2];[1:a]volume=0.5[a1];[2:a]volume=1.0[a2];[a1]
[a2]amix=inputs=2:duration=longest[a]"  -map "[v2]" -map "[a]" -c:a 
aac   -q:v 18   -preset veryfast   -strict -2  -gpu 1 -preset 
ultrafast -y result_1.mp4

138命令和在一起

ffmpeg -hwaccel auto -i a.mp4 -i output_audio.mp3 -i c.wav -i 
output_image2.jpg  -threads auto -filter_complex "
[0:v]trim=start=0:end=283,setpts=PTS-STARTPTS[v2];[v2]
[3:v]overlay=0:0:enable='eq(n,0)'[v3];[1:a]volume=0.5[a1];
[2:a]volume=1.0[a2];[a1][a2]amix=inputs=2:duration=longest[a]"  -map 
"[v3]" -map "[a]" -c:a aac   -q:v 18   -preset veryfast   -strict -2  
-gpu 1 -preset ultrafast -y result_2.mp4

1238 命令和在一起

ffmpeg -hwaccel auto -i a.mp4 -i b.mp3 -i c.wav -i output_image2.jpg   
-i b.mp3 -threads auto -filter_complex "
[0:v]trim=start=0:end=283,setpts=PTS-STARTPTS[v2];[v2]
[3:v]overlay=0:0:enable='eq(n,0)'[v3];[1:a]
[4:a]concat=n=2:v=0:a=1[a4];[a4]atrim=duration=283[a5];
[a5]volume=0.5[a1];[2:a]volume=1.0[a2];[a1]
[a2]amix=inputs=2:duration=longest[a]"  -map "[v3]" -map "[a]" -c:a 
aac   -q:v 18   -preset veryfast   -strict -2  -gpu 1 -preset 
ultrafast -y result_3.mp4

解释


当我们解析这个 FFmpeg 命令时,我们可以按顺序来理解它的各个部分:

-hwaccel auto:这个选项告诉 FFmpeg 使用自动选择的硬件加速。
-i a.mp4 -i b.mp3 -i c.wav -i output_image2.jpg -i b.mp3:这里列出了输入文件,分别是 a.mp4(视频文件)、b.mp3(音频文件,两次出现)、c.wav(音频文件)和 output_image2.jpg(图片文件)。
-threads auto:这个选项告诉 FFmpeg 使用自动选择的线程数。
-filter_complex:这个选项后面是一个复杂的滤镜图,用来处理多个输入流。
[0:v]trim=start=0:end=283,setpts=PTS-STARTPTS[v2]:从第一个输入视频中裁剪出前 283 秒,并将其设置为 v2。
[v2][3:v]overlay=0:0:enable='eq(n,0)'[v3]:将裁剪后的视频 v2 和第四个输入图片 3:v 进行叠加,并且在视频的第一帧上叠加图片,最后得到 v3。
[1:a][4:a]concat=n=2:v=0:a=1[a4]:将第二个音频 1:a 和第五个音频 4:a 进行连接,得到 a4。
[a4]atrim=duration=283[a5]:裁剪连接后的音频,只保留前 283 秒,得到 a5。
[a5]volume=0.5[a1]:将裁剪后的音频的音量设置为原来的一半,得到 a1。
[2:a]volume=1.0[a2]:将第三个音频的音量设置为原来的一倍,得到 a2。
[a1][a2]amix=inputs=2:duration=longest[a]:将音频 a1 和 a2 进行混合,并且将混合后的音频时长设置为最长的输入音频,得到最终音频 a。
-map "[v3]" -map "[a]":这里指定了要使用的视频流和音频流,分别是 v3 和 a。
-c:a aac:指定音频编码器为 AAC。
-q:v 18:指定视频质量。
-preset veryfast:指定视频编码速度为 veryfast。
-strict -2:这个选项告诉 FFmpeg 在使用某些编码器(如 AAC)时使用兼容性模式。
-gpu 1:这个选项指定要使用的 GPU 设备编号。
-preset ultrafast:指定视频编码速度为 ultrafast。
-y:覆盖输出文件而不询问。
result_3.mp4:指定输出文件名为 result_3.mp4。
这个命令的目的是从 a.mp4 中提取视频,从 b.mp3 和 c.wav 中提取音频,将图片 output_image2.jpg 叠加在视频的第一帧上,调整音频的音量,最后将视频和音频混合成一个文件 result_3.mp4。

截图

在这里插入图片描述

性能

在这里插入图片描述

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值