专栏文章 视频对齐方案

剪烛 · 2020年08月05日 · 最后由 小胖。 回复于 2020年08月05日 · 4428 次阅读

适用情况:
1、算是一个没有现成对齐算法比较取巧的方法,针对关键帧基本未变的情况,应该基本不会大变
2、原理为将关键帧提取出来,然后按照关键帧的帧数,定位具体位置进行视频切割
3、我们用于测试直播时测试视频类专项的前处理

提取关键帧信息 (需要分别提取两个文件的关键帧信息)

  1. 将文件关键帧存储成文件
ffmpeg -i source.mp4 -vf select='eq(pict_type\,I)' -vsync 2 -s 1920*1080 -f image2 img_key/core-%02d.jpeg
  1. 输出关键帧对应的帧数位置
ffprobe -select_streams v -show_frames -show_entries frame=pict_type -of csv sources.mp4 | grep -n I | cut -d ':' -f 1 > img_key/frame_indices.txt

按照关键帧精确时间点

【其中有个错误的尝试,直接使用帧数范围剪切,测试了下好像没法切掉开始的视频段

ffmpeg -i source.mp4 -vf trim=start_frame=501:end_frame=6212 -an source_key_cut.mp4

比如提取到文件 1 关键帧范围 a1,b1(指的第几帧),文件 2 关键帧范围 a2,b2
fps 可以从 ffprobe 命令中获取

ffmpeg -i source.mp4 -ss [a1/fps] -t [(b1-a1)/fps] -vcodec copy cut_source.mp4
ffmpeg -i 480.mp4 -ss [b2/fps] -t [(b2-a2)/fps] -vcodec copy cut_480.mp4

-ss 是起始时间点 -t 是持续时间

后续

1、还是得写算法对齐视频,或者配合图像识别算法自动对齐,手动不是长久之计

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 3 条回复 时间 点赞

😀 👣 学习一下

simple 回复

不敢不敢,只是记录一下

膜拜大佬。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册