目的:因为需要保存一个大大的.mp4视频,以防过程中设备出现异常导致整个长长的视频无法正常保存,所以采用分段保存视频的方式,每500帧保存一段,然后再将视频合到一起.最近刚开始学习python,发现python真的很好用,所以这次就使用python中的moviepy库来完成视频的合并.

一.安装moviepy

1. 你首先尝试使用 pip install moviepy指令是否可以正常安装moviepy库(我在python2.7上和python3.7上都尝试了这中安装方式都安装不了,所以不得不采用下面这个方式)

2.采用source文件安装.参照 https://blog.csdn.net/ucsheep/article/details/81000982 下载这个库的source文件,然后按照目录下的 README.rst 的指示安装,

首先cd到你下载的目录文件下,顺序执行 

$ (sudo) pip install ez_setup
$ (sudo) python setup.py install

如果有错误提示

ERROR: moviepy 1.0.3 has requirement imageio<2.5,>=2.0, but you'll have imageio 2.8.0 which is incompatible.

那么就执行

pip install imageio

二.使用moviepy库合并多个视频

我的目录框架是这样的,

上面的每个文件目录下的文件是这样的.

 Bluetooth文件目录

 wifi文件目录

首先是将目录下的所有视频都合并到一起

下面的代码实现视频的合并,文件的合并,多个文件夹下文件的归并

# -*-coding:utf-8-*-
# this python script is to concatenate a sequence of videos into one# import cv2from moviepy.editor import *
import os
import linecache
import shutil#inputVideoPath = "/media/yunlei/Seagate/collection_device_data/20200603/大仟里L2主干道大圈-1591150453197/"
# outputVideoPath = "/media/yunlei/Seagate/collection_device_data/20200603/concatenated/大仟里L2主干道大圈-1591150453197/"
inputVideoPath = "/media/yunlei/Seagate/collection_device_data/20200603/大仟里L2主干道-1591155992285/"outputVideoPath = "/media/yunlei/Seagate/collection_device_data/20200603/concatenated/大仟里L2主干道-1591155992285/"def videoconcatenate(left_right_depth):print("this function is to implement concatenation")dirs = os.listdir(inputVideoPath)videoList = []videoCount = 0for videoDir in dirs:videoName = inputVideoPath + str(videoCount) + "/" + left_right_depth + ".mp4"if os.path.exists(videoName):videoElement = VideoFileClip(videoName)videoList.append(videoElement)videoCount = videoCount + 1concatenateProcessLeft = concatenate_videoclips(videoList)concatenateProcessLeft.to_videofile(outputVideoPath + "/" + left_right_depth + ".mp4", fps = 20,  remove_temp = False)def combinefiles(fileName):print("start to comebine files")#This list is used to store all file datafilePathList = []fileDataList = []fileCount = 0filePathes = os.listdir(inputVideoPath)for filePath in filePathes:fileType = inputVideoPath + str(fileCount) + "/" + fileName + ".txt"if os.path.exists(fileType):filePathList.append(fileType)# print(fileType)fileCount = fileCount + 1totalline = 0for fileElement in filePathList:lineNumber = 1fileLength = len(open(fileElement, encoding='utf-8').readlines())totalline = totalline + fileLength#print(fileLength)while lineNumber <= fileLength:line = linecache.getline(fileElement, lineNumber)#print(line)line = line.strip()fileDataList.append(line)lineNumber = lineNumber + 1print(totalline)fileAll = open(outputVideoPath + "/" + fileName + ".txt", 'w+', encoding='utf-8')for i, p in enumerate(fileDataList):print(i,p)fileAll.write(p+'\n')fileAll.close()def combineFolders(folderName):folderList = []folderCount = 0outputFolderPath = outputVideoPath + "/" + folderName + "/"folderPathes = os.listdir(inputVideoPath)print(folderPathes)for folderPath in  folderPathes:folerType = inputVideoPath + "/" + str(folderCount) + "/" + folderNameprint("folderType")print(folerType)print("start to copy file")if os.path.exists(folerType):filesInFolder  = os.listdir(folerType)print("filesInFolder")print(filesInFolder)for fileInFolder in  filesInFolder:totalPath = folerType + "/" + fileInFolderprint("print totalPath")print(totalPath)if not os.path.exists(outputFolderPath):os.mkdir(outputFolderPath)outputFileName = outputFolderPath + "/" + fileInFoldershutil.copyfile(totalPath, outputFileName)folderCount = folderCount + 1#define the main function,from this function your users functions are called
def main():# combine Bluetooth foldercombineFolders("Bluetooth")# combine wifi foldercombineFolders("wifi")# concatenate video leftvideoconcatenate("left")# # # concatenate video rightvideoconcatenate("right")# # #concatenate video depthvideoconcatenate("depth")# combinefiles("video_time")combinefiles("Camera_time")# combinefiles("Bluetooth_times")combinefiles("wifi_times")
#the entrance of this projrct
if __name__ == "__main__":main()

因为是刚学习python所以很多时候并不知哪个用法更合适,所以那就尝试一下,比如下面这两个遍历路径下的文件的方式,

for videoDir in dirs:

这种,会将dirs路径下的所有文件都获取到,如果比如说我这里的路径下就包括了文件加和文件,而我希望对文件夹做处理,所以我就要先将文件夹挑拣出来.下面就是我只检索那些是文件夹,并且文件夹上有.mp4格式视频的文件目录我才把他们count in.

    videoLeft = inputVideoPath + str(videoCount) + "/" + "left.mp4"videoRight = inputVideoPath + str(videoCount) + "/" + "right.mp4"videoDepth = inputVideoPath + str(videoCount) + "/" + "depth.mp4"if os.path.exists(videoLeft):

第二种,这种os.walk(path)的方式可以返回root就是根目录path,dirs就是root目录下所有的文件夹,以及文件夹下的文件夹,files就是root path下所有的文件.所以你需要根据你的需求来选择使用哪种遍历方式.

for root, dirs, files in os.walk(inputVideoPath):for name in files:print(os.path.join(root, name))for name in dirs:print(os.path.join(root, name))
print(len(videoLeftAll))

python之moviepy库的安装与使用相关推荐

  1. python docx库安装_详解python中docx库的安装过程

    python中docx库的简介 python-docx包,这是一个很强大的包,可以用来创建docx文档,包含段落.分页符.表格.图片.标题.样式等几乎所有的word文档中能常用的功能都包含了,这个包的 ...

  2. python的moviepy库 打包 报错: ‘moviepy.audio.fx.all‘ has no attribute ‘audio_fade 的解决办法

    本篇文章主要讲解python的moviepy库 打包 报错: 'moviepy.audio.fx.all' has no attribute 'audio_fade 的解决办法 日期:2022年3月9 ...

  3. python如何安装wordcloud_基于python的wordcloud库的安装方法

    基于python的wordcloud是最近十分流行的一项技术,而在学习这门技术之前,一定要学会安装.下面给大家介绍一下wordcloud的安装步骤. Tip: python第三方组件有很多都是whl文 ...

  4. python词云库的安装和使用

    python词云库的安装和使用 文章目录 python词云库的安装和使用 词云库的安装 词云库的使用 词云库的安装 如果正常使用pip install wordcloud安装命令通常会报错 error ...

  5. Python 之matplotlib库的安装及Read timed out Error的解决方案

    Python 之matplotlib库的安装 打开cmd窗口.点击开始栏,搜索cmd并打开. 找到安装的Python路径.可以通过右键点击Python快捷键,查找文件路径.(博主电脑并未分盘,故安装到 ...

  6. Python中lxml库的安装(Windows平台)

    之前写过<Python中requests包的安装>,今天我需要安装lxml库,这里我尝试之前安装requests方式,但是没有成功,几经周折,终于总结出来了一个方法,这里拿出来给大家分享. ...

  7. Python+Anaconda中库的安装

    查看Anaconda中的Python的开发环境 (1)conda env list 不同环境中库的安装 方式一:  Pycharm+Anacond安装完成后的Python文件创建以及No module ...

  8. python 删除第三方库_python 安装移动复制第三方库操作

    一.绪论 在使用python开发过程中经常会使用到第三方库.因此就涉及到了如何安装.复制移动. 二.安装方式 第三方库的安装方式 1.python自带包管理器:使用pip命令自动安装.例如:pip i ...

  9. python的Pmw库的安装

    今天尝试了下配置python的GUI,在安装Pmw时在网上搜了下教程,题目是" Ubuntu下安装Python的Tkinter和Pmw库",然后我根据指示下好了文件,又复制在了/u ...

最新文章

  1. nginx 启动 + uwsgi + django
  2. 《代码大全》阅读笔记-26-代码调整技术
  3. mac 查看端口_黑客克星养成记 系列二:MAC-Flooding原理及解决方案
  4. 排序算法笔记:堆排序 HeapSort in java
  5. 2017 ACM/ICPC(西安)赛后总结
  6. 利用SQL语句查找某数据库中所有存储过程包含的内容
  7. 商城项目实战2-登录模块的实现
  8. 出生日期范围的Sql语句_【呕心总结】python如何与mysql实现交互及常用sql语句
  9. [css] 举例说明:not()的使用场景有哪些
  10. 收藏夹库计算机网络的关系,云南省计算机一级考试题库 计算机网络及基础.pdf...
  11. 服务器显示数据库,显示数据库服务器上的数据库数据库
  12. magic_quotes_gpc与magic_quotes_runtime区别
  13. Dropping Balls UVA - 679(二叉树的遍历)
  14. kafka中处理超大消息的一些考虑
  15. ajax跨域请求jsonp
  16. SpringBoot 轻量级英文版个人博客 flame
  17. python 微博自动点赞软件_python3 爬虫学习: 自动给你心上人的微博点赞
  18. 浅析海量数据处理问题
  19. 推荐一本Vue开发的书籍
  20. ifconfig安装

热门文章

  1. node+mongoose使用例子
  2. [BZOJ2326] [HNOI2011] 数学作业 (矩阵乘法)
  3. 大话设计模式之策略模式
  4. centos 安装软件
  5. 用“Web的思想”做PC客户端
  6. sql语句查询数据库返回结果转换显示自定义字段
  7. XHTML标签的嵌套规则
  8. java 线程之线程状态
  9. 【彩彩只能变身队】后端工作总结
  10. 如何用面对对象来做一个躁动的小球?