有一个任务:在播放过程中“即时”更改视频-交换左右部分。 不要反映,即改变,即 将图片分成两部分并交换。 当然,您可以使用诸如
AviSynth之类的帧服务器来做到这一点,但是它不再是“即时”的-您需要为每个视频文件编写脚本。 我想快速而又不会紧张。
在无花果上? 使来自Yandex的
机器学习讲座课程更加方便观看。 讲师指向现场演示的要点,您必须不断用眼睛跳过屏幕以了解其含义:

解决方案
我们使用
Media Player Classic中可用的着色器工具。 在标准套件中,有几种现成的用于编辑图像的着色器-“ Emboss”,“ Grayscale”,“ 16-235至0-255”等。 我们在那里不需要它,因此我们创建了一个新的着色器(
HLSL中的一个小程序):
sampler s0 : register(s0); float4 main(float2 tex : TEXCOORD0) : COLOR {
我们将其保存在媒体播放器的
\ Shaders文件夹中(例如C:\ Program Files \ MPC-HC \ Shaders),名称为
Shift.hlsl 。 接下来,转到“ Media Player经典”设置(“
选项” /“播放” /“着色器” ),然后将新的“着色器”着色器添加到“
激活的预调整大小”着色器列表中。
这种视频处理方法不会加载CPU,因为在任何情况下,所有工作都是由图形卡完成的,如果它是真实的而不是被仿真的。
什么事巴里摩尔
这是一个像素着色器,应根据通过
tex参数传递的坐标来输出点的颜色。 变量
s0包含具有视频当前帧的纹理。
计算新的水平坐标为当前坐标与
swapLine移位之和的除法模1的余数。 因此,当点超出尺寸范围时,我们会将其移到右侧,然后将其重新排列到左侧。
最后,
tex2D(s0,tex)命令从原始帧返回具有所需坐标的点的颜色。
聚苯乙烯