视频的读取与保存 python

1. 视频的读取

主要使用python的cv2

主要介绍:视频帧读取、视频宽高读取、FPS读取

import cv2 as cv
vc = cv.VideoCapture('12.mp4')  # 读入视频文件 
fps=vc.get(cv.CAP_PROP_FPS)  #获取fps
size = (int(vc.get(cv.CAP_PROP_FRAME_WIDTH)),int(vc.get(cv.CAP_PROP_FRAME_HEIGHT)))  #获取宽高
rval, frame = vc.read()
while(rval): 
    rval, frame = vc.read()    #  循环读取每一视频帧

2. 视频的保存

1)PIL

      给图片视频上添加矩形框、文字

from PIL import Image, ImageFont, ImageDraw

img_draw= Image.open(filename) #返回一个Image对象
img_draw.show()
draw = ImageDraw.Draw(img_draw)

draw.rectangle((x,y,h,w), width=5)          

fontpath = "font/simsun.ttc"  
font = ImageFont.truetype(fontpath, 32)
draw.text((x,y)), '你好', font=font, fill=(255, 255, 255))

draw.save(outfile)

2) CV2

     将所需的视频帧进行保存成视频形式

     提取音频形式

     将视频配上音频

import subprocess
import cv2 as cv

def video2mp3(file_name):
    """
    将视频转为音频
    :param file_name: 传入视频文件的路径
    :return:
    """
    outfile_name = file_name.split('.')[0] + '.mp3'
    subprocess.call('ffmpeg -i ' + file_name
                    + ' -f mp3 ' + outfile_name, shell=True)

def video_add_mp3(file_name, mp3_file):
    """
     视频添加音频
    :param file_name: 传入视频文件的路径
    :param mp3_file: 传入音频文件的路径
    :return:
    """
    outfile_name = file_name.split('.')[0] + '-txt.mp4'
    subprocess.call('ffmpeg -i ' + file_name
                    + ' -i ' + mp3_file + ' -strict -2 -f mp4 '
                    + outfile_name, shell=True)

def save_new_video(file_name):
    """      将视频帧保存     
    :param file_name: 传入视频文件的路径  
    :return:     
    """
    outfile_name = 'new_'+file_name.split('.')[0] + '.mp4'

    vc = cv.VideoCapture(file_name)
    interval=vc.get(cv.CAP_PROP_FPS)

    fourcc = cv.VideoWriter_fourcc(*"mp4v")
    size = (int(vc.get(cv.CAP_PROP_FRAME_WIDTH)),int(vc.get(cv.CAP_PROP_FRAME_HEIGHT)))
    out = cv.VideoWriter(outfile_name, fourcc, interval, size)

    rval, frame = vc.read()
    while(rval):
        out.write(frame)
        rval, frame = vc.read()
    vc.release()
    out.release()


if __name__ == '__main__':
    # video2mp3(file_name='MyVideo_3.mp4')
    #save_new_video(file_name='MyVideo_3.mp4')
    video_add_mp3(file_name='new_MyVideo_3.mp4', mp3_file='MyVideo_3.mp3')


3. 视频的裁剪  moviepy

from moviepy.editor import *

my_clip = VideoFileClip(videoPath)
     
# 按照时间裁剪视频,单位:秒       
my_clip.subclip(start_time, end_time).write_videofile(out_video_path)

# 按照画面裁剪视频
my_clip.crop(x1=0,y1=0,x2=360,y2=480).write_videofile(out_video_path)

# 关闭视频流
my_clip.reader.close()
my_clip.audio.reader.close_proc()

Reference:

moviepy-cn 文档

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值