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

前言

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

替换Python的imageio包中自带的ffmpeg以支持GPU编解码加速_第1张图片

问题

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

替换Python的imageio包中自带的ffmpeg以支持GPU编解码加速_第2张图片

深入到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)

替换Python的imageio包中自带的ffmpeg以支持GPU编解码加速_第3张图片

参考资料

[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

你可能感兴趣的:(#,音视频处理,#,GPU加速,#,Python,ffmpeg,cuda,gpu,imageio,python)