moviepy快速切分视频并保存片段


moviepy安装最新版本:

pip install moviepy --pre --upgrade

版本是v2.0.0.dev2。
有两种方法一种快速的:

1、直接使用ffmepg

from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip
ffmpeg_extract_subclip("video1.mp4", start_time, endtime, targetname="test.mp4")

源文件和目标文件后缀要相同。处理速度很快。
这个本质就是使用ffmpeg,可以直接搜索ffmpeg命令来截取。

2、使用moviepy本身

有些视频可能使用ffmepg不能正确处理,可以使用以下代码:

from moviepy.editor import *

# loading video gfg
clip = VideoFileClip("geeks.mp4")
# getting only first 5 seconds
clip = clip.subclip(0, 5)
# showing clip
#clip.ipython_display(width = 360)
clip.write_videofile("test1.avi",fps=clip.fps,threads=10,codec="h264")

几个参数fps可以自己修改,或保持不变;threads影响处理速度;cdoec是编码方式.
在这里插入图片描述
也可以命令行中执行:

ffmepg -codecs

来查看都有那些codecs.

参考:
[1] https://stackoverflow.com/questions/37317140/how-can-i-efficiently-cut-out-part-of-a-video
[2] https://stackoverflow.com/questions/49813130/valueerror-moviepy-couldnt-find-the-codec-associated-with-the-filename-provid

### 使用NumPy对ndarray进行切分保存 在Python中利用`numpy`库可以方便地实现多维数组的切分操作,能将这些处理后的数据保存至文件以便后续读取或分析。 对于横向和纵向分割,有多种方法可供选择。例如,可以通过`hsplit`来进行水平方向上的切割;同样地,采用`vsplit`则适用于垂直方向上划分数组[^4]。 下面给出具体的实例来说明怎样完成这一系列任务: #### 切分Ndarray 假设有一个形状为`(6, 4)`的二维数组,想要将其沿行轴分成三个子数组,每部分包含两行的数据,则可执行如下命令: ```python import numpy as np data = np.arange(24).reshape((6, 4)) print("原始数据:\n", data) # 将其按照行分为3份 splitted_data = np.vsplit(data, 3) for i, part in enumerate(splitted_data): print(f"\n第{i+1}个被拆分出来的数组:") print(part) ``` #### 保存到文件 为了持久化存储上述获得的小型片段,可以选择不同的方式依据实际需求决定最合适的方案。这里介绍两种常用的方法——使用`.npy`格式单独保存各个矩阵或者把它们组合起来存入单个`.npz`压缩包内。 ##### 方法一:分别保存各片断为独立.npz文件 这种方法适合于当希望保持每个小块之间的分离度较高时的情况。 ```python for idx, chunk in enumerate(splitted_data): filename = f"data_chunk_{idx}.npz" np.savez(filename, array=chunk) print(f"{filename} 已经创建.") ``` ##### 方法二:全部打包进一个.zip档案里 如果倾向于更紧凑的形式传输整个集合的话,那么这种方式会更加理想。 ```python output_filename = "all_chunks.npz" arrays_dict = {f"arr_{i}" : d for i,d in enumerate(splitted_data)} np.savez(output_filename,**arrays_dict) print(f"All chunks have been saved into '{output_filename}'") ``` 以上展示了如何运用`numpy`有效地管理大型或多维度的数据集,在科学研究、数据分析等领域具有广泛的应用价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值