赞
踩
ffmpeg version 6.1.1 Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.2)
configuration: --prefix=/usr/local/ffmpeg --enable-debug=3 --enable-libmp3lame --enable-gpl --disable-static --enable-shared --enable-version3 --enable-nonfree --enable-pthreads --enable-postproc --enable-ffplay --enable-libx264 --disable-x86asm --enable-filter=xfade
libavutil 58. 29.100 / 58. 29.100
libavcodec 60. 31.102 / 60. 31.102
libavformat 60. 16.100 / 60. 16.100
libavdevice 60. 3.100 / 60. 3.100
libavfilter 9. 12.100 / 9. 12.100
libswscale 7. 5.100 / 7. 5.100
libswresample 4. 12.100 / 4. 12.100
libpostproc 57. 3.100 / 57. 3.100
源码安装,打开:--enable-filter=xfade windows上官方最新的已经打开此滤镜,如下的命令应该时没有使用xfade
/usr/local/ffmpeg/bin/ffmpeg -i only_1.mp4 -i only_3.mp4 -f lavfi -i color=black -filter_complex "[0:v]format=pix_fmts=yuva420p,fade=t=out:st=30:d=5:alpha=1,setpts=PTS-STARTPTS[va0];[1:v]format=pix_fmts=yuva420p,fade=t=in:st=0:d=5:alpha=1,setpts=PTS-STARTPTS+30/TB[va1];[2:v]scale=960x720,trim=duration=9[over];[over][va0]overlay[over1];[over1][va1]overlay=format=yuv420[outv]" -vcodec libx264 -map [outv] com_4.mp4
only_1.mp4 第一个视频 264 30秒时长,only_3.mp4 第二个视频264 44秒,合并之后,74秒!
这是一个复杂的 ffmpeg
命令,它包含了多个输入文件和复杂的视频处理过程。让我逐步解释这个命令的各个部分:
-i only_1.mp4 -i only_3.mp4 -f lavfi -i color=black
:
-i only_1.mp4
和 -i only_3.mp4
:指定两个输入视频文件。-f lavfi -i color=black
:引入一个黑色背景作为第三个输入流。-filter_complex "[0:v]format=pix_fmts=yuva420p,fade=t=out:st=30:d=5:alpha=1,setpts=PTS-STARTPTS[va0];[1:v]format=pix_fmts=yuva420p,fade=t=in:st=0:d=5:alpha=1,setpts=PTS-STARTPTS+30/TB[va1];[2:v]scale=960x720,trim=duration=9[over];[over][va0]overlay[over1];[over1][va1]overlay=format=yuv420[outv]"
:
-filter_complex
表示后面紧跟着复杂的滤镜图。[0:v]format=pix_fmts=yuva420p,fade=t=out:st=30:d=5:alpha=1,setpts=PTS-STARTPTS[va0]
:处理第一个输入视频,将其转换成 yuva420p 格式,并添加一个在第 30 秒开始持续 5 秒的淡出效果。[1:v]format=pix_fmts=yuva420p,fade=t=in:st=0:d=5:alpha=1,setpts=PTS-STARTPTS+30/TB[va1]
:处理第二个输入视频,将其转换成 yuva420p 格式,并添加一个在视频开始时持续 5 秒的淡入效果。[2:v]scale=960x720,trim=duration=9[over]
:对第三个输入流进行缩放,然后仅保留 9 秒的视频内容。[over][va0]overlay[over1]
和 [over1][va1]overlay=format=yuv420[outv]
:将淡入淡出效果叠加到第三个输入流上,并且最终输出为格式为 yuv420 的视频流 [outv]
。-vcodec libx264 -map [outv] com_4.mp4
:
-vcodec libx264
:使用 libx264 编码器进行视频编码。-map [outv]
:选择之前处理得到的视频流 [outv]
作为输出流。com_4.mp4
:指定输出文件名为 com_4.mp4
。综合来看,这个命令的作用是将两个输入视频进行淡入淡出效果处理,并与一个黑色背景叠加后输出为一个新的视频文件 com_4.mp4
。这个命令结合了视频滤镜、叠加和编码操作,实现了比较复杂的视频处理功能。
测试了很多,尤其是参数稍微调整,就会没有效果,或者第一个视频卡死,或者整个都是粉色条带,如上的命令是最后验证ok的命令
如下发现的一个可以合并不通视频格式:
https://gist.github.com/imcaspar/8778002
在windows上测试过官方提供的:更简单的滤镜
ffmpeg -i only_1.mp4 -i only_2.mp4 -filter_complex xfade=transition=fade:duration=1:offset=5 outputVideo_3.mp4
第一个视频时长:30秒,第二个视频也是30秒,同一路流的不通时间段的2段视频,视频参数完全一致,编码,帧率,分辨率,音频格式,完全一致的情况下!
让我逐步解释这个命令的各个部分:
-i only_1.mp4 -i only_2.mp4
:
-i only_1.mp4
和 -i only_2.mp4
:指定两个输入视频文件。-filter_complex xfade=transition=fade:duration=1:offset=5
:
-filter_complex
表示后面紧跟着复杂的滤镜图。xfade=transition=fade:duration=1:offset=5
:使用 xfade 滤镜来实现交叉淡入淡出效果。
transition=fade
:指定过渡效果为淡入淡出。duration=1
:设置过渡效果持续时间为 1 秒。offset=5
:设置第二个视频的淡入效果在第 5 秒开始。outputVideo_1.mp4
:
outputVideo_1.mp4
:指定输出文件名为 outputVideo_1.mp4
。综合来看,这个命令的作用是将两个输入视频文件进行交叉淡入淡出效果处理,其中第二个视频在第 5 秒开始淡入,并且整个过渡效果持续 1 秒。处理完成后,生成一个新的视频文件 outputVideo_1.mp4
包含了淡入淡出过渡效果。
官方的一个xfade的说明:
CrossFade, Dissolve, and other Effects using FFmpeg's xfade Filter - OTTVerse
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。