opencv的VideoWriter函数以及ffmpy3

VideoWriter()

VideoWriter函数是opencv中用来生成视频的函数,其中的参数,filename是生成视频的路径,fourcc是编码器(可真是个磨人的小妖精),fps即为fps,frameSize为窗口大小。
用法并不是很难:

import cv2
 
fps = 30 
fourcc = cv2.VideoWriter_fourcc('M', 'J', 'P', 'G')
video_writer = cv2.VideoWriter(filename='../media/test7.mp4', fourcc=fourcc, fps=30, frameSize=(width, height))
 
for i in range(1,500):
    # 便历每一张图片(img),将其写入videowriter
    videowriter.write(img)

注意点

  1. 生成视频的窗口大小必须和图片的大小一致,否则虽然不会报错,但生成的视频只有十几kb甚至几kb。
    在这里插入图片描述
  2. 如果是Linux系统中(我是Ubuntu18.04),opencv自带的解码器并不是很多,例如‘MJPG’解码器用来生成avi视频文件,这是很容易就成功的。由于我是在毕设项目里面需要生成视频,而且还需要发送到前端播放,所以需要h264格式的MP4文件,而一开始只能生成MPEG格式的视频,如图:
    在这里插入图片描述
    这种格式传送到前端,html5似乎并不支持,播放不了。所以我想要生成h264格式的视频文件。百度了之后看到需要下载ffmpeg、x264等第三方库,而我用安装了之后,依旧没有用,依旧显示找不到’x264’的编码器代码。
    后来在网上看到有人说,pip安装的opencv-python自带ffmpeg,所以不论怎么用系统的ffmpeg都没有用,需要手动编译安装opencv。由于我只是一个菜鸡,看了几篇安装教程,发现要么太古老,要么看不懂,最后本菜鸡只能放弃了这条路,csdn中这类安装教程还是很多的,大佬们可以直接搜索。
    我最后用了ffmpy3这个库,这是将ffmpeg库命令行操作改成Python调用的一个库。安装的话只需要pip install ffmpy3即可。我用这个库,将avi文件,直接转换成h264格式的MP4文件。这就叫做曲线救国(菜是原罪)。代码如下:
from ffmpy3 import FFmpeg
ff = FFmpeg(inputs={'../media/test6.avi': None},
            outputs={'../media/output.mp4': None})
print(ff.cmd) # 输出一些信息
ff.run()

最后生成的MP4文件:
在这里插入图片描述

发布了2 篇原创文章 · 获赞 1 · 访问量 94

猜你喜欢

转载自blog.csdn.net/qq_41006629/article/details/105255404
今日推荐