Hacks on Computer Vision

分享一个有趣的视频剪切的python代码

2014.06.22

邮箱订阅了hacknews的新闻,每周都会受到一些有意思的链接,而这次看到一个非常有意思的小工具:Videogrep: Automatic Supercuts with Python,即用Python实现的一个视频超级剪切工具。

具体代码托管在github上,看了下文章内容,videogrep是先在视频的字幕文件里搜索匹配,可以指定匹配的内容,也可以用自然语言分析的算法得到字幕中一些内容,比如经常出现的一些文字,然后根据这些内容所在的时间段(字幕.srt文件里都有时间轴的)利用moviepy进行剪切,最后将剪切内容进行合并~想法真棒!可惜作者提供的三个视频都是放在youtube上,只能等下周去公司了在看了^_^

其用法在github上的README内写的非常详细,依赖的库都在requirements.txt中,用下面的命令可以搞定:

pip install -r requirements.txt

除了这些依赖,还要安装ffmpeg,然后在videogrep.py的第一行把ffmpeg对应的安装位置写上去:

FFMPEG_BINARY = '/usr/local/bin/ffmpeg'    # moviepy的依赖

使用方法:

最基本最常用的用法:

python videogrep.py --input path/to/video_or_folder --search 'search phrase'

注意:字幕和视频需要具有一样的文件名,当然后缀除外。比如,像my_movie.mp4my_movie.srt这样就可以。

一些选项:

--input / -i           视频或字幕文件,或者包含多个文件的文件夹
--output / -o          生成文件的名字,默认是“supercut.mp4”
--search / -s          搜索元素
--search-type / -st    搜索类型
--max-clips / -m       切割视频片段的最大数
--test / -t            显示搜索结果,不生成最后的切割结果
--randomize / -r       将切割视频片段随机化
--padding / -p         在每个切割视频片段的开头和结尾添加的毫秒数

其中搜索search有三个选项:

re: 正则表达式(这是默认的)
pos: 部分语音搜索(使用pattern.search)。比如‘JJ NN’将返回所有包含形容词接名词的对话
hyper: 上义词搜索。比如“身体部分”将抓取到所有和身体相关的对话。
    (搜了一下`上义词`,大致意思是比较抽象的概括性的名词)

作者提供了三个视频结果,虽然还没看到,但觉得效果应该还是不错的,毕竟这个工具的思路是很具体的,直接从字幕入手确定分割片段,然后分割合并。我曾经也用过ffmpeg做过类似的工作,但需要自己确定剪切开始的时间和剪切的时长,相对来说还是有些费事。记得以前听过老师的一个分享,对于足球比赛视频,因为比分一般都是位置固定在视频的某处,可以用一些图像处理方法将比分分析出来,当检测到比分变化时就将这段视频剪切出来,就可以汇总出一场比赛的进球集锦了~~改天好好研究下~~

__EOF__

本文作者HackCV
版权声明本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
本文链接https://hackcv.com/posts/%E5%88%86%E4%BA%AB%E4%B8%80%E4%B8%AA%E6%9C%89%E8%B6%A3%E7%9A%84%E8%A7%86%E9%A2%91%E5%89%AA%E5%88%87%E7%9A%84python%E4%BB%A3%E7%A0%81/

发表评论