在剪辑视频的过程中发现部分手机拍摄的视频是带有rotate旋转矫正参数的,一般的opencv脚本剪辑出来的视频是歪的。查询了大量的资料找到一种使用ffmpeg剪辑的方法,将opencv和ffmpeg结合使用可以剪辑目前绝大多数的手机视频。

def cutVideo(path,filename):

video_full_path = path + r'\\' +filename

video_full_path_new = path + r'\\' +'new_'+filename

cap = cv2.VideoCapture(video_full_path)

cap.isOpened()

width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)

height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)

print(width, height)

if cap.isOpened(): # 当成功打开视频时cap.isOpened()返回True,否则返回False

# get方法参数按顺序对应下表(从0开始编号)

rate = cap.get(5) # 帧速率

FrameNumber = int(cap.get(7)) # 视频文件的帧数

duration = FrameNumber / rate # 帧速率/视频总帧数 是时间,除以60之后单位是分钟

len = int(duration)

fps = int(rate)

print(rate, FrameNumber)

if (width > height):

for i in range(0,len):

video_full_path_new = path + r'\\' + str(i) + filename

print(i)

cmd = 'ffmpeg -i {0} -vcodec copy -acodec copy -ss 00:00:0{1} -to 00:00:0{2} {3} -y'.format(video_full_path,str(i),str(i+1),video_full_path_new)

os.system(cmd)

else:

i = 0

while (True):

success, frame = cap.read()

if success:

i += 1

# print('i = ', i)

if (i % fps == 1):

videoWriter = cv2.VideoWriter(path + '/' + str(i) + filename,

cv2.VideoWriter_fourcc('D', 'I', 'V', 'X'), fps,

(int(width), int(height)))

videoWriter.write(frame)

else:

videoWriter.write(frame)

else:

print('end')

break

cap.release()

python ffmpeg剪辑视频_python利用ffmpeg将一段大视频等份的切成多个小视频段相关推荐

  1. 【FFmpeg】java实现利用ffmpeg视频上传转码同时截取一帧保存为同名图片,并获取视频分辨率

    〇.前情提要 完成了视频上传,接下来是给上传的视频保存一张同名的jpg文件在同样文件夹中,并且获取到视频的分辨率. macOS Catalina 10.15.1 ffmpeg version 4.3. ...

  2. android微信朋友圈视频无法播放,微信朋友圈不能分享手机视频怎么回事?微信朋友圈大视频功能安卓不能用吗?...

    微信朋友圈不能分享手机视频怎么回事?微信朋友圈大视频功能安卓不能用吗?最近微信更新,用户可以进行分享自己手机里的视频,这一举措受到很多人的喜欢.那么微信朋友圈不能分享手机视频怎么回事?微信朋友圈大视频 ...

  3. python截取视频_python使用ffmpeg截取视频段

    下载ffmpeg的压缩包,直接解压 建议采用python+ffmpeg截取视频段,但是当视频文件路径含中文时出错,中文乱码.Python用subprocess调用乱码问题. 解决方法:视频文件路径编码 ...

  4. 【音视频】利用ffmpeg实现:音视频的提取,rtmp推流等

    目录 可列出电脑的设备 音频+桌面视频,存mp4 录声音  推流到服务器 音频+桌面视频,推流到服务器 音频+笔记本摄像头,推流到服务器 音频+笔记本摄像头,推流到服务器:通过wvp-pro代+AAC ...

  5. python 视频截取 利用ffmpeg截取MP4视频片段

    学python没多久,发现OpenCV做的视频截取出来的视频无声的 水平有限也没搞明白怎么处理,后面用FFmpeg整了个,如学弟.学妹有用到我这个自行百度怎么配置FFmpeg环境配置,配置好再测试代码 ...

  6. python批量处理视频_Python调用ffmpeg开源视频处理库,批量处理视频

    代码示例 # coding=utf-8 import os import subprocess import datetime import json, pprint import re, time ...

  7. python opencv 录制视频_Python利用opencv实现录制视频

    import cv2 import threading    #python 多线程操作库 class RecordingThread(threading.Thread): def __init__( ...

  8. python单词词频字典_python利用多种方式来统计词频(单词个数)

    python的思维就是让我们用尽可能少的代码来解决问题.对于词频的统计,就代码层面而言,实现的方式也是有很多种的.之所以单独谈到统计词频这个问题,是因为它在统计和数据挖掘方面经常会用到,尤其是处理分类 ...

  9. python rsa 公钥解密_python利用rsa库做公钥解密的方法教程

    前言 对于RSA的解密,即密文的数字的 D 次方求mod N 即可,即密文和自己做 D 次乘法,再对结果除以 N 求余数即可得到明文.D 和 N 的组合就是私钥(private key). 算法的加密 ...

  10. python numpy 子数组_Python利用Numpy数组进行数据处理(一)

    Numpy数组使你可以将许多种数据处理任务表达为简洁的数组表达式(否则需要编写循环).用数组表达式代替循环的做法,通常被称为矢量化. np.meshgrid函数接受两个一维数组,并产生两个二维矩阵(对 ...

最新文章

  1. mycat是什么_MYCAT学习2
  2. Nginx深入了解-基础(一)
  3. 【转】BaseAdapter用法
  4. java adminlte 使用_AdminLTE2管理后台自定义
  5. 阿里强化学习入选MIT十大突破 “新技术”
  6. apb外设怎么分配地址
  7. winform中32位转64位系统上打开
  8. Python程序员都会喜欢的6个库
  9. 【NLP】综述 | 跨语言自然语言处理笔记
  10. Mobilenet-ssd 目标检测
  11. Spring框架学习记录二:装配Bean
  12. window计算机桌面的组成,windows的桌面包括哪些组成部分
  13. 数学建模基础理论【二】(定积分)
  14. 红帽linux5.4安装教程,红帽企业Linux5.4下ORACLE安装步骤(推荐).pdf
  15. 那些年常见的前端bug (持续更新)
  16. 串口发送数据,只接收到00的原因之一
  17. JAVA_数组的截取
  18. 机刷——App推广作弊内幕系列
  19. 【笔记】拜占庭将军问题与共识算法
  20. Android实现快速发送电子邮件

热门文章

  1. laspy读取laz点云文件--TypeError: a bytes-like object is required, not ‘FakeMmap‘
  2. 《孙子兵法》【谋攻第三】
  3. Python 进阶之路 (一) List 进阶方法汇总,新年快乐!
  4. java中有关自增(++)自减(--)
  5. 微信即时通信原理_一对一直播交友源码实现即时通讯功能的解决方案
  6. 64位VBA免注册调用32位COM DLL的问题
  7. keras 香草编码器_如何使用香草javascript制作简单的游戏循环
  8. 【嵌入式学习——知识点总结】几种排序算法
  9. 量子学习及思考7-量子基本数学知识
  10. Linux给环境变量取别名之alias