几行python代码轻松将图片转为视频

听说闲鱼流量挺高,于是搞了一下。还真别说,搞了一个月,输入了一千大洋。搞过闲鱼的应该知道,如果你上传视频,闲鱼会给予很高的权重。但是手上只有商品的图片,有没有办法转成视频呢?

有人说ffmpeg可以,确实我也试了,但是不能满足我的需求。咋办,自己造轮子吧,谁让咱是程序员呢。

 

思路如下:

  • 读取图片
  • 计算时长,组装图片数组
  • 通过pyav将图片转成视频
import logging
import numpy as np
import av
import cv2 as cv
​
LOGGER = logging.getLogger()
logging.basicConfig(level="DEBUG")
​
def generate_video(images, out_path, per_photo_second=0.8, fps = 24):
    """
    
    :param images: 图片路径
    :param out_path: 视频输出路径
    :param per_photo_second: 每幅图片时长
    :param fps: fps
    :return: 
    """
    try:
        cv_images = []
        
        for i in images:
            cv_images.extend([i]*int(fps*per_photo_second))
​
        cv_images = [cv.imread(i) for i in cv_images]
        # 获取图片的size, 所以图片最好尺寸一致
        width, height, _ = cv_images[0].shape
        container = av.open(out_path, mode='w')
        # mp4格式
        stream = container.add_stream('mpeg4', rate=fps)
        stream.width = width
        stream.height = height
        stream.pix_fmt = 'yuv420p'
        stream.bit_rate = 1024*1024*8
        for i in cv_images:
            # 转成pyav 的frame
            frame = av.VideoFrame.from_ndarray(i, format='bgr24')
            for packet in stream.encode(frame):
                container.mux(packet)
        for packet in stream.encode():
            container.mux(packet)
        container.close()
    except Exception as e:
        LOGGER.error("generate video error", exc_info=True)

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值