替换Python的imageio包中自带的ffmpeg以支持GPU编解码加速

前言

imageio是一个比较好用的用于读写图片数据的Python library,在处理视频数据时是以imageio_ffmpeg为backend的。

在这里插入图片描述

问题

当使用imageio读写视频时,其会调用imageio_ffmpeg包以使用ffmpeg作为backend。而其自带的ffmpeg只支持CPU,不支持GPU编解码加速。

在这里插入图片描述

深入到imageio_ffmpeg所在位置,例如~/.conda/envs/env_name/lib/python3.7/site-packages/imageio_ffmpeg/binaries,可以看到目录下有一个名为“ffmpeg-linux64-v4.2.2”的二进制文件,这就是预编译好的FFmpeg。

如果需要支持GPU加速,则需要我们先安装好GPU版FFmpeg(见参考资料[2]),然后在上述目录建立GPU版FFmpeg的软链接。

# 切换到目录
cd ~/.conda/envs/env_name/lib/python3.7/site-packages/imageio_ffmpeg/binaries

# 备份imageio_ffmpeg自带的cpu版本ffmpeg
cp ffmpeg-linux64-v4.2.2 ffmpeg-linux64-v4.2.2-bak

# 建立gpu版本ffmpeg软链接
ln -s /usr/bin/ffmpeg ffmpeg-linux64-v4.2.2

在这里插入图片描述

使用

import imageio

video_path = 'test.mp4'
video_reader = imageio.get_reader(video_path, 'ffmpeg', ffmpeg_params=['-c:v', 'h264_cuvid'])

frame_list = []
for i, frame in enumerate(video_reader):
    frame_list.append(frame)

imageio.mimsave('out.mp4', frame_list)

在这里插入图片描述

参考资料

[1] imageio - Python library for reading and writing image data
[2] Ubuntu上安装ffmpeg-cuda加速
[3] github - imageio/imageio
[4] imageio · PyPI
[5] Ubuntu上安装ffmpeg
[6] ffmpeg: you are trying to apply an input option to an output file or vice versa. Move this option before the file it belongs to. · Issue #294 · imageio/imageio

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TracelessLe

❀点个赞加个关注再走吧❀

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值