处理视频的md5值,完成视频防屏蔽功能

小菜鸟来到新公司接到第一个烫手的山芋是如何处理一个视频,使其产生不同的克隆视频,辨别成不同的视频,防止屏蔽?

工具:FFmpeg

完成这个需求花了大概一个星期,大概有4天在寻找ffmpeg-php扩展,你放心,根本找不到适应高版本php的扩展,最后只得放弃,直接linux安装fmpeg。

利用FFmpeg更改视频的md5值,采用了两个方案

方案一:裁剪视频的首尾,使其改变视频的md5值

FFmpeg命令

ffmpeg -ss [start] -t [duration] -accurate_seek -i [in].mp4 -codec copy [out].mp4

[start]:为需要截取内容的开始时间     例如  01:02:03.04           表示从视频的1小时2分钟3.04秒开始裁剪
[duration]:为需要截取的时长              例如    8                          表示裁剪8s
[in]:为输入视频文件名                        例如    C:\Users\admin\Desktop\old.mp4           表示被裁剪的视频
[out]:为输出视频文件名                      例如    C:\Users\admin\Desktop\new.mp4         表示裁剪出新的视频

从前面裁剪,00:00:00.xx   小数点后不会改变MD5  秒级别裁剪 实验0秒和1秒裁剪不改变,往后裁剪有的会改变

从后面裁剪,00.xx   后面小数点两位有效裁剪会改变MD5

上面是我自己裁剪测出的数据,有一定的参考价值

PHP代码

$random_a = mt_rand(1, 99);
$random_b = ($videotime - 2) . '.' . mt_rand(1, 99);
exec(FFMPEG_PATH . "ffmpeg -ss 00:00:00." . $random_a . " -t " . $random_b . " -accurate_seek -i " . $oldPath . " -codec copy  -avoid_negative_ts 1 " . $newPath, $output, $code);

方案二:给视频加不同位置的水印,使其改变视频的md5值

这个自行百度,需要注意的是有些FFmpeg命令由于安装FFmpeg库不全的原因会导致执行不了,不用太纠结,想省事就用方案一就好。

你可能感兴趣的:(PHP)