VapourSynth入门教程

hamster 2021-04-15 PM 207℃ 0条

VapourSynth是一个新兴的开源视频预处理工具。相比已经广泛使用的AviSynth,VapourSynth架构更加先进,同时使用Python作为脚本语言,灵活性更强。作为VapourSynth入门教程,本文主要介绍利用VapourSynth配合FFmpeg进行视频压制的主要步骤。在本文中,我们的工作环境是openSUSE Leap 15.2。

软件安装

VapourSynth和FFmpeg都可以直接通过zypper安装。首先添加packman源并刷新缓存:

sudo zypper ar -f https://mirrors.tuna.tsinghua.edu.cn/packman/suse/openSUSE_Leap_15.2/ packman
sudo zypper refresh

安装FFmpeg、VapourSynth以及其他工具

sudo zypper in ffmpeg-4 python3-vapoursynth libffms2-4 vapoursynth-tools mediainfo

视频压制示例

这里我们用一个简单的例子来说明如何通过VapourSynth和FFmpeg进行视频压制。我们使用的视频源文件为The.Big.Bang.Theory.S12E17.720p.HDTV.x264-AVS.mkv,这是一个分辨率为1280x720的视频,下载地址为

链接:https://pan.baidu.com/s/1hsbldGHGtpaPWLGgV_lv1g
提取码:va7s

在源视频目录下,创建一个Python脚本run.py,填入下面代码:


# 载入相关库
from vapoursynth import core
core.std.LoadPlugin(path='/usr/lib64/libffms2.so.4')
# 内存最多使用1000M
core.max_cache_size = 1000
# 读取源视频
video = core.ffms2.Source(source=r'The.Big.Bang.Theory.S12E17.720p.HDTV.x264-AVS.mkv')
# 将视频尺寸分辨率缩小为1024x576
x = 1024
y = 576
video_resize = core.resize.Spline36(clip=video, width=x, height=y)

# 输出视频
video_resize.set_output()

在这个脚本中,VapourSynth读取源视频,将分辨率缩为1024x576后再输出。输出的视频由vspipe传给FFmpeg进行编码,命令为

vspipe --y4m run.py - | ffmpeg -i pipe:  The.Big.Bang.Theory.S12E17.576p.HDTV.x264-AVS.mp4

其中The.Big.Bang.Theory.S12E17.576p.HDTV.x264-AVS.mp4是输出视频文件名。

以上就是用VapourSynth和FFmpeg进行视频压制的基本流程。总结一下,先编辑Python脚本文件对源视频进行预处理,然后通过vspipe将预处理后的视频传给FFmpeg进行编码。

标签: VapourSynth, FFmpeg

非特殊说明,本博所有文章均为博主原创。

评论啦~