Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
|
![]() |
|
Thread Tools | Search this Thread | Display Modes |
![]() |
#1 | Link |
Chiptuner & VapourSynther
Join Date: Mar 2019
Location: Scarlet Devil Mansion, Gensōkyō
Posts: 52
|
vapoursynth.VideoNode object does not support item assignment
Three years ago (or maybe more), HolyWu had written some helper function for looping still images with RGB & alpha layers:
Code:
# HolyWu's helper function for looping an RGB+alpha still image def loop_vfx(c, times): c[0] = c[0] * times c[1] = c[1] * times return c Code:
2022-08-16 20:45:59.749 setVideoInfo: Video filter Source has more than one output node but only the first one will be returned setVideoInfo: Video filter Source has more than one output node but only the first one will be returned 2022-08-16 20:45:59.797 Failed to evaluate the script: Python exception: 'vapoursynth.VideoNode' object does not support item assignment Traceback (most recent call last): File "src\cython\vapoursynth.pyx", line 2890, in vapoursynth._vpy_evaluate File "src\cython\vapoursynth.pyx", line 2891, in vapoursynth._vpy_evaluate File "D:\fakepath\TH09_07.VPY", line 54, in ChanLabelLoop = loop_vfx(ChannelLabels,9156) File "D:\fakepath\TH09_07.VPY", line 12, in loop_vfx c[0] = c[0] * times TypeError: 'vapoursynth.VideoNode' object does not support item assignment 2022-08-16 20:45:59.888 Core freed but 1 filter instance(s) still exist Core freed but 1 filter instance(s) still exist Code:
import vapoursynth as vs from vapoursynth import core import vsutils as vsu import havsfunc as haf import functools import sys import math vsufuncs = vsu.vsutils() # HolyWu's helper function for looping an RGB+alpha still image def loop_vfx(c, times): c[0] = c[0] * times c[1] = c[1] * times return c # corrscope oscilloscope video Corrscope = core.ffms2.Source(r'E:\corrscope\TH09_07.MKV') # 60 fps, RGB CorrscopeCrop = Corrscope[8626:17782] # total 9156 frames # corrscope channel-label overlay (RGB+alpha) ChannelLabels = core.ffms2.Source(r'E:\corrscope\5FM+3SSG+ADPCM+RHY.png',alpha=True) ChanLabelLoop = loop_vfx(ChannelLabels,9156) #invoking here HolyWu’s function ChanLabelRGB = ChanLabelLoop[0].std.AssumeFPS(fpsnum=60,fpsden=1) ChanLabelMask = ChanLabelLoop[1].std.AssumeFPS(fpsnum=60,fpsden=1) # match frame rate to corrscope video # Overlay channel labels onto corrscope segment Loop2 = haf.Overlay(CorrscopeCrop,ChanLabelRGB,mask=ChanLabelMask) Loop2.set_output()
__________________
SilSinn9801 a.k.a. Silent Sinner in Scarlet Discord: silsinn9801 Matrix: silsinn9821:matrix.org YouTube: https://youtube.com/SilentSinnerInScarlet ニコニコ動画: https://nicovideo.jp/user/68029427 Last edited by SilSinn9801; 17th August 2022 at 09:38. Reason: linking back to the only surviving quote of HolyWu’s loop_vfx function (after he deleted all of his posts on this forum) |
![]() |
![]() |
![]() |
#2 | Link | |
Registered User
Join Date: May 2011
Posts: 372
|
Quote:
|
|
![]() |
![]() |
![]() |
#3 | Link | |
Chiptuner & VapourSynther
Join Date: Mar 2019
Location: Scarlet Devil Mansion, Gensōkyō
Posts: 52
|
Quote:
Google-searching both FFMS2 & VideoNode terms together doesn’t give me anything meaningful. EDIT: Even the current GitHub documentation says nothing at all about Source putting out VideoNodes, it still says that an array of two clips is output with alpha=True.
__________________
SilSinn9801 a.k.a. Silent Sinner in Scarlet Discord: silsinn9801 Matrix: silsinn9821:matrix.org YouTube: https://youtube.com/SilentSinnerInScarlet ニコニコ動画: https://nicovideo.jp/user/68029427 Last edited by SilSinn9801; 17th August 2022 at 09:30. Reason: EDIT: linking the GitHub FFMS2 documentation |
|
![]() |
![]() |
![]() |
#4 | Link | |
Chiptuner & VapourSynther
Join Date: Mar 2019
Location: Scarlet Devil Mansion, Gensōkyō
Posts: 52
|
Quote:
__________________
SilSinn9801 a.k.a. Silent Sinner in Scarlet Discord: silsinn9801 Matrix: silsinn9821:matrix.org YouTube: https://youtube.com/SilentSinnerInScarlet ニコニコ動画: https://nicovideo.jp/user/68029427 |
|
![]() |
![]() |
![]() |
#5 | Link |
Registered User
Join Date: Sep 2010
Location: Ukraine, Bohuslav
Posts: 377
|
Alpha plane is now stored as frame property (_Alpha), use PropToClip for access.
__________________
Me on GitHub PC Specs: Ryzen 5950X, 64 GB RAM, RTX 2070 Notebook: Ryzen 7945HX, 32 GB RAM, RTX 4060, 17'' @ 240Hz @ 1440p |
![]() |
![]() |
![]() |
#6 | Link | |
Chiptuner & VapourSynther
Join Date: Mar 2019
Location: Scarlet Devil Mansion, Gensōkyō
Posts: 52
|
Quote:
Code:
import vapoursynth as vs from vapoursynth import core import vsutils as vsu import havsfunc as haf import functools import sys import math vsufuncs = vsu.vsutils() # corrscope oscilloscope video (640×400p, 60 fps, FFV1, RGB) Corrscope = core.ffms2.Source(r'E:\corrscope\TH09_07.MKV') CorrscopeCrop = Corrscope[8626:17782] # total 9156 frames # corrscope channel-label overlay (640×400, PNG, RGB+alpha) ChannelLabels = core.ffms2.Source(r'E:\corrscope\5FM+3SSG+ADPCM+RHY.png',fpsnum=60,fpsden=1,alpha=True) ChanLabelRGB = ChannelLabels.std.Loop(9156) ChanLabelMask = ChannelLabels.std.PropToClip(prop='_Alpha').std.Loop(9156) # Overlay channel text labels onto corrscope segment Loop2 = haf.Overlay(CorrscopeCrop,ChanLabelRGB,mask=ChanLabelMask) Loop2.set_output() Code:
2022-08-18 03:00:52.404 setVideoInfo: Video filter Source has more than one output node but only the first one will be returned setVideoInfo: Video filter Source has more than one output node but only the first one will be returned 2022-08-18 03:00:52.409 Failed to evaluate the script: Python exception: PropToClip: no frame stored in property: _Alpha Traceback (most recent call last): File "src\cython\vapoursynth.pyx", line 2890, in vapoursynth._vpy_evaluate File "src\cython\vapoursynth.pyx", line 2891, in vapoursynth._vpy_evaluate File "D:\fakepath\TH09_07.VPY", line 58, in ChanLabelMask = ChannelLabels.std.PropToClip(prop='_Alpha').std.Loop(9156) File "src\cython\vapoursynth.pyx", line 2636, in vapoursynth.Function.__call__ vapoursynth.Error: PropToClip: no frame stored in property: _Alpha 2022-08-18 03:00:52.430 Core freed but 1 filter instance(s) still exist Core freed but 1 filter instance(s) still exist Core freed but 768192 bytes still allocated in framebuffers Core freed but 768192 bytes still allocated in framebuffers
__________________
SilSinn9801 a.k.a. Silent Sinner in Scarlet Discord: silsinn9801 Matrix: silsinn9821:matrix.org YouTube: https://youtube.com/SilentSinnerInScarlet ニコニコ動画: https://nicovideo.jp/user/68029427 Last edited by SilSinn9801; 18th August 2022 at 08:53. Reason: clarify that I’m trying to get the alpha out of the PNG with PropToClip but instead it says the clip has no _Alpha property |
|
![]() |
![]() |
![]() |
#7 | Link | |
Chiptuner & VapourSynther
Join Date: Mar 2019
Location: Scarlet Devil Mansion, Gensōkyō
Posts: 52
|
OK so now I found this:
https://www.vapoursynth.com/2021/09/...d-performance/ Quote:
__________________
SilSinn9801 a.k.a. Silent Sinner in Scarlet Discord: silsinn9801 Matrix: silsinn9821:matrix.org YouTube: https://youtube.com/SilentSinnerInScarlet ニコニコ動画: https://nicovideo.jp/user/68029427 |
|
![]() |
![]() |
![]() |
#8 | Link |
Chiptuner & VapourSynther
Join Date: Mar 2019
Location: Scarlet Devil Mansion, Gensōkyō
Posts: 52
|
OK, nevermind, there was a newer, unofficial build dated April 2022:
https://forum.doom9.org/showthread.p...96#post1967796 This one does send alpha to the _Alpha property instead of making cliptuple. So my code above now works.
__________________
SilSinn9801 a.k.a. Silent Sinner in Scarlet Discord: silsinn9801 Matrix: silsinn9821:matrix.org YouTube: https://youtube.com/SilentSinnerInScarlet ニコニコ動画: https://nicovideo.jp/user/68029427 |
![]() |
![]() |
![]() |
Tags |
holywu, item assignment, loop_vfx, vapoursynth r59, videonode |
Thread Tools | Search this Thread |
Display Modes | |
|
|