ffmpeg实例,fade淡入淡出效果


ffmpeg命令目录


淡入淡出效果

在这里插入图片描述

fade

应用淡入/淡出
它接受下面参数:

•type, t
指定类型是in代表淡入,out代表淡出,默认为in

•start_frame, s
指定应用效果的开始时间,默认为0.

•nb_frames, n
应用效果的最后一帧序数。
对于淡入,在此帧后将以本身的视频输出,对于淡出此帧后将以设定的颜色输出,默认25.

•alpha
如果设置为1,则只在透明通道实施效果(如果只存在一个输入),默认为0

•start_time, st
指定按秒的开始时间戳来应用效果。
如果start_frame和start_time都被设置,则效果会在更后的时间开始,默认为0

•duration, d
按秒的效果持续时间。
对于淡入,在此时后将以本身的视频输出,对于淡出此时后将以设定的颜色输出。
如果duration和nb_frames同时被设置,将采用duration值。默认为0(此时采用nb_frames作为默认)

•color, c
设置淡化后(淡入前)的颜色,默认为"black".

fade例子

•30帧开始淡入
fade=in:0:30


•等效上面
fade=t=in:s=0:n=30


•在200帧视频中从最后45帧淡出
fade=out:155:45 fade=type=out:start_frame=155:nb_frames=45


•对1000帧的视频25帧淡入,最后25帧淡出:
fade=in:0:25, fade=out:975:25


•让前5帧为黄色,然后在5-24淡入:
fade=in:5:20:color=yellow


•仅在透明通道的第25开始淡入
fade=in:0:25:alpha=1


•设置5.5秒的黑场,然后开始0.5秒的淡入:
fade=t=in:st=5.5:d=0.5

实例

ffmpeg -i 1.mp4 -vf fade=in:0:50 out3.mp4
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
如果不想安装 ffmpeg,可以考虑使用 Java 中的 Xuggler 库来实现视频转场淡入淡出效果。以下是一个示例代码,可以实现两个视频的淡入淡出转场效果: ```java import com.xuggle.mediatool.IMediaReader; import com.xuggle.mediatool.IMediaWriter; import com.xuggle.mediatool.ToolFactory; import com.xuggle.xuggler.IContainer; import com.xuggle.xuggler.IStream; import com.xuggle.xuggler.IStreamCoder; public class VideoTransition { public static void main(String[] args) { // 第一个视频文件 String inputVideoFile1 = "/path/to/input1.mp4"; // 第二个视频文件 String inputVideoFile2 = "/path/to/input2.mp4"; // 输出视频文件 String outputVideoFile = "/path/to/output.mp4"; // 淡入淡出的持续时间(单位:秒) double fadeDuration = 1.0; // 创建一个读取第一个视频文件的 MediaReader 对象 IMediaReader reader1 = ToolFactory.makeReader(inputVideoFile1); // 创建一个读取第二个视频文件的 MediaReader 对象 IMediaReader reader2 = ToolFactory.makeReader(inputVideoFile2); // 创建一个写入输出视频文件的 MediaWriter 对象 IMediaWriter writer = ToolFactory.makeWriter(outputVideoFile, reader1); // 获取第一个视频流的编码器对象 IContainer container1 = reader1.getContainer(); IStream videoStream1 = container1.getStream(0); IStreamCoder videoCoder1 = videoStream1.getStreamCoder(); // 获取第二个视频流的编码器对象 IContainer container2 = reader2.getContainer(); IStream videoStream2 = container2.getStream(0); IStreamCoder videoCoder2 = videoStream2.getStreamCoder(); // 计算淡入淡出的帧数 int fadeFrames = (int) (fadeDuration * videoCoder1.getFrameRate().getDouble()); // 读取第一个视频文件的帧并写入输出文件 while (reader1.readPacket() == null) { writer.encodeVideo(0, reader1.getFrame(0), 0); } // 写入第一个视频文件的最后几帧,加上淡出效果 for (int i = 0; i < fadeFrames; i++) { writer.encodeVideo(0, reader1.getFrame(0).getFadeOut(i, fadeFrames), 0); } // 写入第二个视频文件的第一帧,加上淡入效果 writer.encodeVideo(0, reader2.readPacket().getFrame(0).getFadeIn(fadeFrames), 0); // 读取第二个视频文件的帧并写入输出文件 while (reader2.readPacket() == null) { writer.encodeVideo(0, reader2.getFrame(0), 0); } // 写入第二个视频文件的最后几帧,加上淡出效果 for (int i = 0; i < fadeFrames; i++) { writer.encodeVideo(0, reader2.getFrame(0).getFadeOut(i, fadeFrames), 0); } // 关闭所有的读写对象 reader1.close(); reader2.close(); writer.close(); } } ``` 在上面的代码中,我们使用了 Xuggler 库来读取视频文件和写入视频文件,并使用 getFadeIn 和 getFadeOut 方法来实现淡入淡出效果。需要注意的是,Xuggler 库的使用相对于 ffmpeg 更加复杂,需要细心地处理各种异常情况。 希望这个示例代码对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值