Emm*_*and 3 python linux bash video ffmpeg
我意识到这听起来是一个简单的问题,而且之前已经得到了回答。但是,我似乎找不到一个脚本可以读取不同长度的视频文件夹,从每个视频中复制随机片段,然后将它们连接到单个视频中。
一个例子:
我有一个文件夹,里面有 150 个视频,标签为 Fashion-Setlist-01.mp4、Fashion-Setlist-02.mp4 等。每个视频都超过 1 小时。我想从每个视频中随机提取 10 秒的部分,然后将它们随机添加在一起,形成一个视频。只需几个视频,这似乎很容易,但计划是从可能有 100 个视频中读取。也应该可以从每个视频中提取多个部分。我想如果视频需要更长,我们可以运行脚本两次以获取更多片段。
moviepy是最合适的工具(它使用 ffmpeg 作为后端)。在 moviepy 中连接视频很简单:
import moviepy.editor
import os
import random
import fnmatch
directory = '/directory/to/videos/'
xdim = 854
ydim = 480
ext = "*mp4"
length = 10
outputs=[]
# compile list of videos
inputs = [os.path.join(directory,f) for f in os.listdir(directory) if os.path.isfile(os.path.join(directory, f)) and fnmatch.fnmatch(f, ext)]
for i in inputs:
# import to moviepy
clip = moviepy.editor.VideoFileClip(i).resize( (xdim, ydim) )
# select a random time point
start = round(random.uniform(0,clip.duration-length), 2)
# cut a subclip
out_clip = clip.subclip(start,start+length)
outputs.append(out_clip)
# combine clips from different videos
collage = moviepy.editor.concatenate_videoclips(outputs)
collage.write_videofile('out.mp4')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3508 次 |
| 最近记录: |