「这是我参与2022首次更文挑战的第28天,活动详情查看:2022首次更文挑战」
课程背景
- 最近各种项目忙的焦头烂额,正好掘金粑粑开始更文挑战了,抽着空也写写技术文章。
- 前天遇到个需求大概是这样,
- 有大约120G的监控视频,每3秒钟一个。
- 每一天下面有24个文件夹代表24小时
- 每一个小时下面有60个文件夹代表60分钟
- 每一个分钟文件夹下有 20个三秒的视频
- 需求就是,能恢复拼接好这些视频。
问题分析
每分钟60秒 会有20个视频。那么一个小时的视频就有1200个文件组成。这可把我那客户愁坏了。不会视频剪辑,还得排着复制粘贴。出了1500RMB让我搞,还要给她把视频剪辑好,要360个视频,我一口回绝了,真把咱当苦力了。
解题思路
难点在于视频拼接上,尝试一下步骤
- 去百度搜
php拼接视频没找到 - 去php手册
视频处理扩展没找到 - 去百度搜 python有没有相关功能 。找到库,但是感觉挺复杂,需要研究时间
- 转了一圈没找到方法 只能自己动脑子了
- 把每个文件用二进制读出来,然后再拼起来成一个新文件。感觉这个方法可行
- 于是进行了以下尝试
正文开始
找两个测试文件,并建立index.php文件
读取 1.mp4 2.mp4文件到流中。把两部分保存成一个新文件。
<?php
$file1 = fopen('./1.mp4','rb');
$content1 = fread($file1, filesize ('./1.mp4'));
fclose($file1);
$file2 = fopen('./2.mp4','rb');
$content2 = fread($file2, filesize ('./2.mp4'));
fclose($file2);
$fp = fopen('3.mp4', 'w');
fwrite($fp, $content1);
fwrite($fp, $content2);
fclose($fp);
此时运行会生成 3.mp4文件 点击 3.MP4发现文件能正常播放。这就完成了合并的操作。 剩下的就是扫描目录下的文件,拍着去处理每一个文件即可
scandir('./');
总结
类似上面的思路,把文件夹遍历完成。获取所有的文件,依次将文件拼接到一起即可。