Vapoursynth 在 9 月正式添加了音频支持,并在此之前进行了测试。由于它现在支持音频,我希望将一些旧的 Avisynth 项目转换为 Vapoursynth。部分原因是我对 Python 的熟悉,部分原因是在我选择的 linux 发行版中使用 QTGMC 设置 Vapoursynth 要容易得多。
无论如何,我的问题是当我运行脚本并将结果传递给 FFMPEG 时,FFMPEG 只获取视频流而不是音频流。从脚本的角度来看,看起来我应该做的一切都是正确的,但是关于处理音频的文档太少了,我无法确定。我倾向于我的 vspipe 命令的问题,但我不确定需要做什么才能说“此流中有音频”
这是 vspipe/ffmpeg 命令后跟的脚本:
import vapoursynth as vs
import havsfunc as haf
import math
core = vs.core
# Assume NTSC standard framerate and 48kHz as default
def framesToSamples(frameNum, framerate=29.97, samplerate=48000):
return math.floor((samplerate/framerate)*frameNum)
video = core.ffms2.Source(r'Home Movies 1 - 1989.avi', format=vs.YUV422P8)
audio = core.bas.Source(r'Home Movies 1 - 1989.avi', track=1)
video = video[71:217640]
audio = audio[framesToSamples(71):framesToSamples(217640)]
video = core.cnr2.Cnr2(video,"ooo",8,16,191,100,255,32,255,False) #VHS
video = haf.QTGMC(video, Preset="Very Slow", EZDenoise=2.0, TrueMotion=True, ChromaMotion=True, TFF=False)
video = core.std.Crop(video,4,0,4,6)
video = core.resize.Lanczos(video, 352, 240, format=vs.YUV422P10)
video.set_output(0)
audio.set_output(1)
以及要转换的命令:
vspipe -c y4m "Home Movies 1 - 1989.vpy" - | ffmpeg -i pipe: -c:v libx265 -preset fast -crf 24 -c:a libopus -b:a 96k -ac 1 Test.mkv