python has no attribute_Python 调用 FFmpeg 报错 module ‘ffmpeg’ has no attribute ‘input’

在使用python中的ffmpeg-python时候遇到了几个问题,在此总结一下

1、调用 FFmpeg 报错 module ‘ffmpeg’ has no attribute ‘input’

ffmpeg原本是一个命令行工具,只是通过python封装好的API来执行,所以还是要在你本地安装ffmpeg的工具包,当时我的报错如下

bug1.png

方法:如果是mac,本地命令行中执行

method1.jpg

可能会比较慢,如果遇到依赖包安装超时,可能是网络问题,重启来一次就好。

还有一种可能就是在pip安装的时候安装了ffmpeg,实际上应该是ffmpeg-python,常见的情况就是以上这两种,terminal安装方式如下

pip3 install ffmpeg-python -i https://pypi.tuna.tsinghua.edu.cn/simple

pip3 uninstall ffmpeg

2、TypeError: img is not a numpy array, neither a scalar

使用ffmpeg输出的结果是byte类型的数据,如果用下面的方式存储成图片可能会遇到问题

cv2.imwrite("./videoframe/" + str(i) + ".jpg", cur_frame)

报错截图如下:

bug2.jpg

建议采用这种方式转化byte和图片数据,先创建图片然后注入数据:

file = open(img_path, 'wb')

file.write(byte_data)

3、从视频中提取视频帧的代码如下

from moviepy.editor import *

import wave

import numpy as np

import pylab

import skimage

import imageio

import cv2

import ffmpeg

import time

def extract_frame(input_path='./test.mp4'):

"""

以60s为间隔提取视频帧,并将其作为图片保存

:str input_path:

:None:

"""

vc = cv2.VideoCapture(input_path)

c = 1

if vc.isOpened():

# 文件读取到结尾,rval的返回值就为False

rval, frame = vc.read()

else:

rval = False

time_interval = 60

# 视频采样的间隔是60s,vc.get(5)获得帧频,CV_CAP_PROP_FPS

fps = vc.get(5)

total_frame = vc.get(7)

loop_number = int(total_frame/(fps*60))

timeF = fps * time_interval

count = 0

for i in range(loop_number):

cur_frame = read_frame_by_time(input_path, i*60)

cur_path = "./videoframe/" + str(i) + ".jpg"

file = open(cur_path, 'wb')

file.write(cur_frame)

vc.release()

def read_frame_by_time(input_file, t):

"""

指定时间节点读取任意帧

"""

output_file = "./videoframe/" + str(int(t/60)) + ".jpg"

out, err = (

ffmpeg.input(input_file, ss=t)

.filter('select', 'gte(n,{})'.format(250))

.output('pipe:', vframes=1, format='image2', vcodec='mjpeg')

.run(capture_stdout=True)

)

print(type(out))

return out

if __name__ == '__main__':

time_start = time.time()

extract_frame()

time_end = time.time()

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值