0

在 AviSynth 中,有没有返回当前帧号的函数?如果没有,我怎样才能得到当前的帧号?

这是我的问题,但对于质量标准:
目标是在条件语句中使用它,以便在将编码与其源进行比较时清楚地看到什么。类似于以下内容。

a=import("source.avs")
b=ffvideosource("encode.mkv")
interleave(a,b)
media = ((currentFrame % 2 > 0) ? "Encode" : "Source")
subtitle(media)
4

2 回答 2

2

可以在 PotPlayer 或其他支持 AVISynth 并可以逐帧播放的播放器中创建同时显示两个视频的时间和帧数。PotPlayer 使用“F”键前进,使用“D”键后退。这是通过安装 AVISynth 和 AVS 脚本创建的:

LoadPlugin("C:\Program Files (x86)\AviSynth 2.5\plugins\ffms2.dll")
V1 = FFVideoSource("Wham!Last Christmas.mp4")
V2 = FFVideoSource("Wham!Last Christmas.mp4")
stackvertical(v1,v2)
ShowFrameNumber(scroll=true, x=20, y=40, font="Arial", size=24, text_color=$ff0000)
ShowTime(x=82, y=64, font="Arial", size=24, text_color=$ff0000)
ShowSMPTE(fps=24, x=78, y=88, font="Arial", size=24, text_color=$ff0000)

添加 FPS=24 以防 fps 不准确。V1 和 V2 在这里是同一个文件,但不一定是,FFMS2.dll 是 ffmpeg 视频加载器,但您可以使用 directshowsource 并消除加载插件 ffms2 为:

V1 = DirectShowSource("Wham!Last Christmas.mp4")
V2 = DirectShowSource("Wham!Last Christmas.mp4")
stackvertical(v1,v2)
ShowFrameNumber(scroll=true, x=20, y=40, font="Arial", size=24, text_color=$ff0000)
ShowTime(x=82, y=64, font="Arial", size=24, text_color=$ff0000)
ShowSMPTE(fps=24, x=78, y=88, font="Arial", size=24, text_color=$ff0000)
于 2013-09-08T14:23:44.323 回答
2

有一个名为 *current_frame* 的运行时变量。但是要以这种方式获得您想要的东西,您应该使用ConditionalFilter函数:http ://avisynth.org/mediawiki/ScriptClip

解决此任务的另一种方法,我认为这更简单:

a=import("source.avs").subtitle("Source")
b=ffvideosource("encode.mkv").subtitle("Encode")
interleave(a,b)
于 2013-08-16T20:41:42.763 回答