返回

用 FFmpeg 为 Android 微信小视频录制添加滤镜

Android

微信小视频录制功能再升级:Android FFmpeg 带滤镜实时录制

前言

上期文章中,我们利用 FFmpeg 分别实现了对 Android Camera2 采集的预览帧进行编码生成 mp4 文件,以及对 Android AudioRecorder 采集 PCM 音频的编码。本期,我们将继续深挖,探讨如何在录制过程中添加滤镜,打造酷炫视频效果。

滤镜实现原理

滤镜本质上是对视频帧进行图像处理,通过像素级操作改变其色彩、亮度、对比度等属性。FFmpeg 中提供了丰富的滤镜库,可满足各种场景需求。

滤镜应用实践

1. 添加基本滤镜

ffmpeg -i input.mp4 -vf "colorbalance=brightness=0.5" output.mp4

此命令将输入视频的亮度调整为原来的 50%。

2. 组合多个滤镜

ffmpeg -i input.mp4 -vf "colorbalance=brightness=0.5,contrast=1.2" output.mp4

此命令同时调整了亮度和对比度。

Android FFmpeg 实现

1. 初始化滤镜

AVFilterGraph filterGraph = AVFilterGraph.create();
AVFilterContext context = filterGraph.getContext();

2. 添加滤镜

AVFilter filter = context.addFilter("colorbalance");
filter.set("brightness", "0.5");

3. 链接滤镜

AVFilterLink link = context.link(filterGraph.getSource(), 0, filter, 0);

4. 处理视频帧

AVFrame frame = AVFrame.obtain();
while (frame != null) {
    // 从 Camera2 获取帧
    AVPacket packet = input.poll();
    // 将帧处理滤镜
    frame = filterGraph.filterFrame(packet);
    // 编码帧
    output.writeFrame(frame);
}

效果展示

添加滤镜后,录制出的视频将呈现出不同的视觉效果,例如:

  • 亮度调整: 改变视频整体亮度,营造明亮或昏暗的氛围。
  • 对比度调整: 增强或减弱视频中明暗区域的差别,打造更生动或更柔和的画面。
  • 色彩平衡: 调整视频中色彩的比例,赋予视频不同的色调和情绪。

结语

通过利用 FFmpeg 的滤镜库,我们成功地为 Android 微信小视频录制功能增添了滤镜功能。开发人员可根据实际需求选择合适的滤镜,为用户提供丰富的视频创作体验。随着 FFmpeg 功能的不断挖掘,让我们期待更多精彩的实现。