View Full Version : Good free prog lang for fast creation of an AVISynth-based NLE?
ShawnFumo
14th March 2005, 07:23
A question for everyone... I was thinking of trying to make a simple non-linear editor (like Premiere) which uses AVISynth as the engine.
I was thinking about it today and AVISynth seems incredibly well-suited for the task. Like if you import a video, it could immediately make a .avs file. If you select in/out points, it adds a trim command. Same thing for filters like de-interlacing or blur. Then when you put them on the timeline, it makes a new .avs file which imports the files for each clip, with + or dissolve to merge them together, as well as audiodub for a soundtrack. You could easily seek across the timeline by seeking the main avs file, etc.
Now, vion11 made the AVE Visual Editor, which I think is cool and reminds me of the Buzz music software. I wish he was still working on it, but still it is more suited toward layering effects than for actual linear editing.
Anyway, my real question is if anyone has an opinion on what programming language/tookit to use? It needs to be something that is free (I have no $$$ right now, so something like Visual Studio is out). Most important are the gui and video capabilities. It needs to be able to work with video through avisynth (have a video window, seek bar, etc) and a decent gui with capabilites like drag and drop.
Do you think something like the Dev-C++ IDE mixed with wxWidgets perhaps? Or is there something easier like a Python driven interface? The interesting thing is that since AVISynth is doing all the hard work, I think I can get away with an interpreted scripting language instead of a full compiled program.
I have a decent amount of programming experience, but I'm a bit clueless when it comes to doing a full windows gui from scratch. Most of my graphical exploits have been with javascript/css or flash. Any thoughts?
Thanks,
Shawn
morsa
14th March 2005, 08:39
You could probably use this:
http://opensource.adobe.com/
jkwarras
14th March 2005, 10:48
Originally posted by ShawnFumo
A question for everyone... I was thinking of trying to make a simple non-linear editor (like Premiere) which uses AVISynth as the engine.
Damn, I've you do this, I'll love you ;)
Seriously, some talk around here has already been done about making a NLE for avisynth. I think that making a NLE avisynth editor will be incredible in order to get indie filmmaking interest. Avisynth is great for cleaning, effects, deinterlacing, etc... but as far as NLE, there's definetly a need of a pro GUI.
Fizick
14th March 2005, 14:02
Microsoft Visual C++ Toolkit 2003 is free compiler.
And Microsoft Platform SDK is free too.
jkwarras
14th March 2005, 14:10
I don't know anything about programming but I guess that the best choice is to try to make it crossplatform. As apaprently avisynth 3.0 will be able to be ported to linux (that's what I've erad around here), it'll be convenient to also has a NLE that could be ported to linux.
Again, I knwo nothing about prograamming and the difficulties of what I've talking about :rolleyes:
jkwarras
14th March 2005, 15:09
Originally posted by jkwarras
some talk around here has already been done about making a NLE for avisynth.
I've finally found some of these links:
http://forum.doom9.org/showthread.php?s=&threadid=85573&highlight=avisynth+AND+NLE
Related (?) stuff:
http://forum.doom9.org/showthread.php?s=&threadid=28576&highlight=avisynth+AND+NLE
http://forum.doom9.org/showthread.php?s=&threadid=70607&highlight=avisynth+AND+NLE
http://forum.doom9.org/showthread.php?s=&threadid=69722&highlight=avisynth+AND+NLE
http://forum.doom9.org/showthread.php?s=&threadid=83408&highlight=avisynth+AND+NLE
http://forum.doom9.org/showthread.php?s=&threadid=71482&highlight=avisynth+AND+NLE
llamatronique
16th March 2005, 00:17
In my experience, the holy grail for cross-platformness when it comes to gui toolkits doesn't really exist. wxWidgets is OK, but you'll find that a lot of what you want to achieve with an NLE gui requires something like a canvas. wx has it's wxDC derived objects, but I think they're pretty limiting. The Gnome-Canvas is da bomb, but it's pretty much limited to X11.
QT is an option, and I think that Trolltech are talking about making the win32 libs free (if they haven't already?). Personally I don't like the look of it though.
In my experience, attempting to go cross platform with a single code base will limit you severely... you'll spend 80% of the time trying to figure out how to make something happen on all platforms, when you could very easily spend a much smaller amount of time replicating functionality across a number of platforms.
One exception to this I think is Java's SWT, which gives native wrappers, but also some very nice 2D graphics doo-dads for doing timelines and other graphics intensive widgets.
ShawnFumo
16th March 2005, 02:52
Thanks for the responses, guys... Let's see:
morsa: I've actually seen that before. It does seems incredibly interesting but a bit abstract and high level for me at this point. Maybe I can revisit it after working with things a bit.
Fizick: Good to know. I think if I went with C++, though, I might just go with something like the Dev-C++ IDE to interface with MinGW.
jkwarras: Yeah, while I'm doing it mostly for myself at this point, it'd be nice if others could get something out of it. As for crossplatform, that is always good, but it seems like it'll still be a while before Avisynth itself will be crossplatform. In any case, thanks for all those links. They were helpful. :)
llamatronique: Well, I probably won't be focusing on cross-platform myself, especially since I don't have the hardware or expertise. If I can make something good, perhaps others will pitch in on the porting front. As far as wxWindows goes, I'm kind of leaning that way from other programs I've seen lately.
Audacity is pretty much a multi-track editor in a lot of ways not that far off from a NLE (c++ and wxWidgets / win+lin+mac):
http://audacity.sourceforge.net/about/screenshots
Transana works with video and audio for transcription purposes. A pretty impressive program actually that even uses a copy of mysql (wxPython, PythonWin, mysql-python, etc / win+mac):
http://www2.wcer.wisc.edu/Transana/Transana
Most importantly for what I'm doing now is OpenVIP. This was an NLE for linux/windows which had a core written in c/++ as well as using the ffmpeg libraries. But on top of it was a separate GUI written in wxPython. You can see some pics of it here:
http://openvip.sourceforge.net/userdoc/ch01s02.html
Now, it looks like it was abandoned about a year ago, but I'd actually used it before and rejected it. I had an error that cropped up on mine (though it didn't stop it from working), but the ultimate dealbreaker was that while it had a preview window, you couldn't just hit play. The only way to actually see it playing was to render out an AVI. I searched the mailing lists and they said it was because the core was just too slow. Judging from how sluggish it is, I can attest to that.. For someone like me who is editing to music (more on that later), that was way more hassle than was worth it to deal with. Having avisynth as the core would solve that for the most part.
I don't know how good OpenVIP's gui code is and how easy it would be to adapt to what I want to do, but it DOES have working NLE widgets. Currently it has multiple video and audio tracks. A video with sound goes onto both and drags together. You can change the boxes to show filmstrip and waveform if you want. There's a razor tool. Has a transition track for video and audio that snaps the transition to the amount of overlap, etc.
There's a lot missing (bins, a way to mark in/put on clips, zooming the timeline, slip/slide tools, etc) but if it could just be faster and a bit more polished, it'd actually be pretty functional for simple projects. It seems like a logical place to start anyway...
I gotta go and see if I can get DSL (finally!) set up, but I'll write some more on what I'd like this project to be in my next post...
Shawn
ShawnFumo
16th March 2005, 05:29
Gah.. another half-hour until the Ethernet drivers finish downloading so I can use the DSL. Oh the irony...
In any case, just a quick explanation on what I'd like to accomplish (if I can manage to pull it off...). Personally, I'm coming from the perspective of a yo-yo player (also juggling, poi, etc). A lot of people (including kids) will tend to record with a DV camcorder and cut together tricks to music, like a music video. But usually people don't have too many special effects since it'd obscure what you're trying to show off.
So, my main intention would be to get something that can de-interlace, trim clips, cut/dissolve, slowmo/fastmo, freezeframe, and do basic titles. It'd also have a general focus on making sure you can easily preview in realtime to help with synching up to music. Also probably geared toward DV at first since that's what I use (but obviously avisynth can read almost anything so that could easily be changed in the future).
I think a lot of projects try to be be too ambitious up front and it is hard to atract users when they can't use the program yet. Plus, if it gets abandoned everyone is left with nothing. So my first goal would be to get something with fairly limited features but that works solidly. Then expand from that. Like I wouldn't try to have all the filters availible in the GUI right away. But a nice side-effect of avisynth is that it is all text files. So if someone wanted say a blur filter on a clip, they could always open up and add it for the final render. It'd still be way easier than trying to script all the cuts/transitions by hand.
Things for the future might be manipulating the files for speed. Like using linear resizing and fast deinterlacing for preview, but replace it with better for final. Maybe downsize, apply filters, upsize for slow filters. Or an ideal thing would be what the big packages do. Take any segment of video that has changed, split it off from the rest, render it out with avs2avi into DV again and add it into the preview video. Then for a final render it could use dsynth to instantly make a DV file. Of course if the final render was to some other codec, it could ignore the temp files (or have the temps be huffyuv to begin with) and just frameserve it directly.
But really, you should ignore that last paragraph for now..haha. :) For now I'll just work on seeing if I can make a base to stand on.
Cheers,
Shawn
d'Oursse
16th March 2005, 08:44
Originally posted by llamatronique The Gnome-Canvas is da bomb, but it's pretty much limited to X11.
gnome canvas is nothing compared to evas
But, helas, evas is also limited to X11, even if it would be not so much work to port it to windows
jkwarras
16th March 2005, 10:43
Originally posted by ShawnFumo
[B]Most importantly for what I'm doing now is OpenVIP. This was an NLE for linux/windows which had a core written in c/++ as well as using the ffmpeg libraries. But on top of it was a separate GUI written in wxPython. You can see some pics of it here:
http://openvip.sourceforge.net/userdoc/ch01s02.html
I've installed it sometime ago when I was looking for an opensource NLE. I didn't really like it because I wasn't able to move the windows/previews, etc... the program loos good in terms of intention and features (which is what it's all about) but it definetly needs to be polished to look like a pro NLE. I don't mean that it has to look gorgeous (the features are must more important), but at least has to be confortable and look as a regular NLE ('ala' Final Cut Pro or Adobe Premiere or AVID).
Originally posted by ShawnFumo
[B]Most importantly for what I'm doing now is OpenVIP. This was an NLE for linux/windows which had a core written in c/++ as well as using the ffmpeg libraries. But on top of it was a separate GUI written in wxPython. You can see some pics of it here:
http://openvip.sourceforge.net/userdoc/ch01s02.html
There's a lot missing (bins, a way to mark in/put on clips, zooming the timeline, slip/slide tools, etc) but if it could just be faster and a bit more polished, it'd actually be pretty functional for simple projects. It seems like a logical place to start anyway...
In anycase, it seems like a good start for your project. I'm glad someone is getting seriously interested in that :)
Originally posted by ShawnFumo So, my main intention would be to get something that can de-interlace, trim clips, cut/dissolve, slowmo/fastmo, freezeframe, and do basic titles. It'd also have a general focus on making sure you can easily preview in realtime to help with synching up to music. Also probably geared toward DV at first since that's what I use (but obviously avisynth can read almost anything so that could easily be changed in the future)
I think a lot of projects try to be be too ambitious up front and it is hard to atract users when they can't use the program yet. Plus, if it gets abandoned everyone is left with nothing. So my first goal would be to get something with fairly limited features but that works solidly. Then expand from that. Like I wouldn't try to have all the filters availible in the GUI right away. But a nice side-effect of avisynth is that it is all text files. So if someone wanted say a blur filter on a clip, they could always open up and add it for the final render. It'd still be way easier than trying to script all the cuts/transitions by hand.
I can just agree with you. As an user I expect it to work, and it's really fustrating to open a program and see that it just don't work fully. i like a progr to work fully even if it has limited features. if it looks solid to me, I'll wait to the development to add the features I want and keep testing and using it :)
DV seems like a good start. Once you have that working, people will start to push you to add more formats (DVPRO, HD, blabla...).
Good luck and put me in your beta testing list :)
d'Oursse
16th March 2005, 10:46
another project, based on gstreamer :
http://www.pitivi.org/
chilkari
16th March 2005, 17:35
I'm a Java UI developer -- I believe it could be done in Java. In the end, all this tool needs to do is generate AVS scripts. Any language can generate text files (of course, knowing what to put into them will be an evolutionary process).
The difficulty lies more in the previews/video renderings of said AVS files.
Java is cross-platform, and offers all the things you need to make a performant and high quality UI. There is also an add-on API called the Java Media Framework which uses native libraries (for each platform) to do high-performance rendering of 'time-based' media like video and audio. In my limited tinkering with it, it provides codecs for a few of the obvious things (MPEG1/2, straight unc. AVI, some others...). But the codecs are extensible.
If a JMF codec could be written which takes the AVS frameserver as input and renders it in a Java panel, I would think that's all you'd need (at least to get started).
I've thought often of working on such a tool. I love AviSynth so much, that I use it for my NLE in text mode (even without a GUI), despite the fact that I have several other commercial NLE's available to me. I just prefer the control of avisynth. I'd still want to get into the script, but simply having some graphical gui-based 'helpers' to quickly define my trim points, transitions, etc. would be a huge time saver.
ShawnFumo
16th March 2005, 18:01
jkwarras: Yeah, there were definitely issues with the gui in openvip. The most annoying thing for me was probably that the preview window was not "stay on top". So if you had it anywhere over the editing window, it'd get hidden every time you clicked to move something! I'm personally pretty familiar with Premiere, so the look will probably end up moving toward that. But I'm hoping to try to keep the functions interfacing avisynth and the gui itself as separated as possible, so maybe someone can make their own guis later. We'll see..
d'Oursse: I've seen that and it does look nice. The main issues are gstreamer which while aparantly possible to work on windows would probably be hard for me to do. More so the issue that the GUI I think is written staight to GTK. Still, if I get a linux machine up and running at some point, I can look more closely at the interface to maybe learn from it.
chilkari: Between what you and llamatronique have said, I'm going to more seriously look into Java. I have actually programmed in Java in the past, but it was many years ago (I was using it for an applet), way before SWT was around. Computers were also a lot slower then, so I should try to let go of old perceptions...
Do you have any recommendations on free IDEs and/or GUI building programs for Java? Anything to help a bit with the learning curve of such a big project would be much appreciated. :)
Thanks guys,
Shawn
chilkari
16th March 2005, 18:42
I use Eclipse -- its great and free. No built-in GUI builder, but there are probably plugins. Be warned -- using a GUI builder tool isn't a great way to 'learn' java GUI development. They all have their own idiosynchratic ways of spitting/splitting out methods, and laying things out. It's pretty analogous to a visual HTML editor vs. knowing how to write it by hand. The builder can help when you just want to quickly get things laid out, but to really make it do what you want, you'll want to understand the code. (Probably obvious).
This seems pretty interesting, I might take a whack at it too, and if you end up working in Java, we can help each other out.
ShawnFumo
16th March 2005, 23:25
chilkari: Actually, if you have a chance, do you think you could do a test? From the bits that I've been reading of JMF, it sounds like it may not be as simple as it just tapping into DirectShow. I saw several places of someone asking if JMF worked with Avisynth, but there wasn't a response. It'd take me quite a while to get up to speed with things like Eclipse and AWT and JMF and all of that.
If you could make or find a simple java app that just tries to display a video and test if it works with Avisynth, that'd be a pretty big step. If it doesn't work, that kind of kills off java as being really viable...
I did just find this, though:
AVI encapsulated video codecs, on the other hand, are handled by the VCM wrapper that we provide in JMF. VCM is an older Windows API for video compression/decompression. This works inside a Processor in JMF. So when you refer to a codec available on windows, you'll need to consider if its a DirectShow (aka Windows Media) or a VCM codec.
VCM I think is VfW, and Virtualdub uses VfW and can read Avisynth right? That does give some hope, but it still makes me nervous that I don't know for sure that AVS works in JMF...
Thanks,
Shawn
chilkari
17th March 2005, 01:16
Sounds good -- I agree if JMF can't be made to work with Avisynth, it defeats the whole Java angle. Not sure when my next window will be (still working at the moment), but I'll see if I can't dig into this a little bit and see how difficult it will be to get a JMF player running which shows an Avisynth script. I'll post with whatever I find (good or bad).
chilkari
17th March 2005, 02:18
Initial results were pretty sketchy.
I did write a quick player based on the JMF examples. I was able to load and play a standard mpg file here. Making the old HelloWorld avisynth version script:
return Version()
and saving as version.avs failed to play directly in my JMF player.
I used the Link2 AVI wrapper on videotools.net to make a version.avi wrapper around the script. This worked! I was able to play that.
However, trying to load an MPG with DirectShowSource and wrapping that with the wrapper failed.
Of course, this is all just very very quick testing with sample vids I grabbed off the net -- didn't even look at their color spaces, etc.
I'm guessing that to do this properly, a 'real' DataSource must be authored for JMF which knows how to handle .AVS scripts in all of the supported color formats. Such a thing could be done and sounds useful to me. I'll see if I can dig into this.
Given this, you may wish to keep digging for a language or environment more naturally condusive to your project. I'll drop some posts if/when I make any progress with JMF/Avisynth integration :)
vcmohan
17th March 2005, 04:18
I think it is zarxrax (hope got name right) in another thread "Possibility of turning Avisynth into a full-fledged NLE" had a GUI and wanted to proceed further. But for some reason not much progress was done. Please have a look at the GUI developed there.
jkwarras
17th March 2005, 10:49
Originally posted by ShawnFumo
[B]I'm personally pretty familiar with Premiere, so the look will probably end up moving toward that.
It sounds great to me. I'm also a main Premiere user, but I've also used FCP in the past and it's really a industry standard atm. And since recents premiere versions looks really close to Final Cut Pro, you'll have 'two in one' (well kind of) ;)
Zarxrax
17th March 2005, 17:40
If you are serious about doing this, then I would be glad to help out however I can.
There is one major problem that I see with this though: Avisynth is slow. Editing avisynth scripts in realtime could be quite painful. For this reason I thought it might be better to wait on avisynth 3 developement to go farther.
To see just how bad this might be, load up any complex avisynth script into virtualdubmod. Make a change to the script, then refresh it in vdubmod. Note how long it takes vdubmod to pull up the new script? An editor would essentially have to do reload the script after every single operation.
One possible solution I see to this, is having the editor use its own methods for trimming and fading clips, and use avisynth only for extended functions. This would be a lot of work, however.
ShawnFumo
17th March 2005, 18:59
Originally posted by Zarxrax
There is one major problem that I see with this though: Avisynth is slow. Editing avisynth scripts in realtime could be quite painful. For this reason I thought it might be better to wait on avisynth 3 developement to go farther.
To see just how bad this might be, load up any complex avisynth script into virtualdubmod. Make a change to the script, then refresh it in vdubmod. Note how long it takes vdubmod to pull up the new script? An editor would essentially have to do reload the script after every single operation.
One possible solution I see to this, is having the editor use its own methods for trimming and fading clips, and use avisynth only for extended functions. This would be a lot of work, however.
Zarxrax: Thanks for the response. I'll have to experiment a bit here, but I've been going by my experience with AVSEdit, whose preview window always has seemed to come up in a flash. I do have two drives in SATA, so that might help things on my end. But I also wonder if it depends on the size of the video in general? Does virtualdubmod parse through the whole video initially? I'll see if AVSEdit takes longer to preview with longer video files. If it is a problem, I have a couple of ideas that may help... Even without that, it might be ok for shorts (like under 5 minutes), which would be a start. But I'll look into the speed issue more tonight.
Shawn
Zarxrax
17th March 2005, 20:44
Hmmm, well I've never tried AVSedit, so perhaps the speed issue is more of a fault of virtualdub than avisynth.
One way that would be good to test the speed is to write up a simple script that takes in a number of different source videos, then add about 100 trims and joins to your script, then do a little overlaying.
Finally try putting this into avsedit and see how long it takes to update something simple, like adding some cropping. I'd say that would give you a good all around idea of how it would perform under normal usage.
ShawnFumo
18th March 2005, 20:30
Well, I did do some experimenting last night. One thing I did was to load up a big two-hour divx movie and add, dissolve, etc to itself a bunch of times. A little bit of a delay but not very much. Seemed like it'd be livable during editing. But for something a bit more realistic, I went for doing edits on several DV files I'd captured.
I picked five of them with a range of sizes, as well as a 3min wav file and did some edit-ish things to them. You can see my script below:
# DV ranging from 12MB to 160MB
a=AVISource("D:\Worlds2004\video1.avi")
b=AVISource("D:\Worlds2004\video2.avi")
c=AVISource("D:\Worlds2004\video3.avi")
d=AVISource("D:\Worlds2004\video4.avi")
e=AVISource("D:\Worlds2004\video5.avi")
# 37MB audio
aud1=WAVSource("D:\Music\BradSucks\out.wav")
# Fadein, silenced audio, and trimmed down
a=a.FadeIn(50)
a=a.AudioDub(tone(a.Audiolength(),0,48000,2,"Silence"))
a=a.trim(0,100)
# Slow motion (half speed) with slow audio also
b=b.ConvertToYUY2.ConvertFPS(59.94).AssumeFPS(25,sync_audio=true)
\.ResampleAudio(48000).ConvertToRGB24()
# Play this clip backward
c=c.Reverse()
# Overlay music on this clip and fade out
e=e.AudioDub(aud1)
e=e.FadeOut(150)
# Dissolve between all the clips
dissolves=dissolve(a,c,b,d,e,10)
# Audio doesn't fade out completely without more space
finished = dissolves+blankclip(dissolves,length=120)
return finished
The speed of opening that seemed barely any slower than just opening a single DV file (certainly less than a second), so that seemed really promising. I'll still have to try more of a brute force test in terms of loading, like say dissolving clips from a hundred different DV files. Avisynth doesn't seem to care much about things like adding the same file to itself a bazillion times, but I'm not sure how much loading it has to do for a given frame when many different source files are involved.
One thing that does concern me slightly, is that loading into virtualdub seems extremely fast for me also. Media Player Classic has a definite pause of at least two seconds for opening any kind of file, but virtualdub seems to load anything superfast for me. Maybe not quite as fast as the previewer in avsedit, but no real perceived delay either. Do you think you could try installing avsedit and loading some DV files (do you have any raw dv lying around?) and see what kind of delay there is? What are your specs on processor, hard drive speed, etc?
Another important thing I did discover was that DirectShowSource was significantly slower to open than AVISource and WAVSource for me. It'd give me something like a 2sec delay even in avsedit. I'm not sure if that was because I have some filters installed (like ReClock) or if DSS is just slower overall. If you used DSS anywhere in your script, that could certainly cause a delay in opening the script in virtualdub.
Shawn
Zarxrax
18th March 2005, 22:19
I'm no longer concerned with the speed of avisynth, as I have learned that it is more than capable of handling most edits at blazing fast speeds.
I don't have any DV clips on hand. Do you know if the dv codec included in ffdshow works correctly?
Zarxrax
18th March 2005, 23:04
I found a good article here regarding various languages for writing GUIs:
http://reflectivesurface.com/weblog/2004/10/01/on-gui-development
ShawnFumo
21st March 2005, 18:54
Originally posted by Zarxrax
I found a good article here regarding various languages for writing GUIs:
http://reflectivesurface.com/weblog/2004/10/01/on-gui-development
Zarxrax, thanks a lot for that link. It helps me feel like I'm going in the right direction with wxPython.
I did actually do a couple more speed tests, with some interesting results. I found that importing a bunch of DV clips (around 44 ranging from small to 300megs) brought things up to a 2-second delay. That seems to be related entirely to disc access as adding effects on top of that didn't really affect the load time. You would have thought putting a reverse() on the whole thing would cause it to take longer, but nope.
In comparison, loading a single 12gig file took only 1 second. I would guess because it didn't have to go out to different parts of the hard drive. So, I'm thinking having all your clips together in a defragged part of the hard drive will be very important for performance.
Of course there could be all kinds of tricks done, if you needed a long movie with thousands of clips. For instance, you could set a working area and have avisynth add a blank clip for the length prior and after that area. Or some other solution with... As you said, I'm not too worried either, but it was good to get some tests to get a better feel for it.
I couldn't work too much on this over the weekend since I've had to get a new e-mail with the change to DSL and I had a bazillion sites to log in and change it. Hopefully I won't ever have to do that again for many years!
Cheers,
Shawn
vcmohan
22nd March 2005, 03:34
Originally posted by ShawnFumo
Another important thing I did discover was that DirectShowSource was significantly slower to open than AVISource and WAVSource for me.
Shawn
Yes if DirectShowSource is used any time reverse seek occurs it is painfully slow. So when same source file is used a billion times as you stated it will crawl if its a dss source. Some solution to dss must be found as a majority of home video amatueres can output their video on to computer only in DV1 format.
However it appears that you are taking up a good over due project, and best wishes. OpenVIP used wxPython for their GUI and it seemed reasonably good.
ShawnFumo
23rd March 2005, 15:59
Originally posted by vcmohan
Yes if DirectShowSource is used any time reverse seek occurs it is painfully slow. So when same source file is used a billion times as you stated it will crawl if its a dss source. Some solution to dss must be found as a majority of home video amatueres can output their video on to computer only in DV1 format.
Hmmm.. didn't realize that was a known issue. Hopefully one of the things that the mysterious 3.0 will fix. :) As for DV1 vs DV2, I'm actually not all that worried. You can easily capture to DV2 with free tools like WinDV, and I believe there's also a couple of free converters that work without recompressing. Standalone mp3 files have to be converted to wav first in order to use WAVSource, but I don't think that's too too horrible either.
[B]
However it appears that you are taking up a good over due project, and best wishes. OpenVIP used wxPython for their GUI and it seemed reasonably good.[B]
Thanks. :) Yeah, OpenVIP is one of my main reasons for first gravitating toward wxPython. I've been looking at the demos that came with wxPython and am pretty impressed so far. Drag and drop and combination list/tree views seem very possible.
The first real task I've set up for myself right now is to try to get a simple window up that embeds WMP and plays avisynth files. I was able to play an avs file in Transana, so I know it can work. I just want to see if I can get it working with the new activex support in wxPython, instead of going out to pythonWin. That way I can also test to see if WMP can switch files quickly without having to totally reload itself. GUI code is scary, but if that works, I'll be confident the project is feasible..
Shawn
Mug Funky
28th March 2005, 15:35
i see dSynth being extremely useful here... more work still, but essentially it would allow a "recompress only when needed" feature (like what premiere tries to implement, but makes a total balls-up of). this means simple trims and edits (on i-frame only codecs like DV and huffy) will mean the video gets passed through without recompression, and transitions and other things that actually change the frames will (somehow) invoke the source codec and recompress on export. of course, recompression would only happen on export, like with all good NLEs.
ShawnFumo
28th March 2005, 21:27
Originally posted by Mug Funky
i see dSynth being extremely useful here...
Yeah, that was actually one of my eventual plans. I'd read some of the dsynth threads before and thought it'd be cool if I could have a feature like that, since it seems like people need it. One thing at a time, though.. :)
I did manage to get WMP embedded in a super-simple app by pulling some code form Transana (a bit harder than I thought, though, since Transana has lots of cross-dependancies). It seems pretty fast and you get a fair amount of control over it in activex. I'm going to start looking closer at OpenVIP now to see what if anything I can grab from there...
Cheers,
Shawn
esby
29th March 2005, 12:12
Originally posted by Mug Funky
i see dSynth being extremely useful here... more work still, but essentially it would allow a "recompress only when needed" feature (like what premiere tries to implement, but makes a total balls-up of). this means simple trims and edits (on i-frame only codecs like DV and huffy) will mean the video gets passed through without recompression, and transitions and other things that actually change the frames will (somehow) invoke the source codec and recompress on export. of course, recompression would only happen on export, like with all good NLEs.
Well, the problem is that the encoding application has to be aware of the dual nature of stream.
For that, I see two possibilities:
* Having dsynth produces an hybrid stream, containing decoded frames AND encoded frames, the encoding application would have to detect the evil frames before trying to decompresses these.
* Having dsynth produces a normal stream, uncompressed, and having it produces on a secondary video stream (according to avi spec, avi can have several streams), which would contain the direct streamed version of the video. And, you would still need to have the encoding application handle it properly.
I personnaly think that the second solution is better.
esby
Bidoche
29th March 2005, 14:34
Originally posted by Mug Funky
and transitions and other things that actually change the frames will (somehow) invoke the source codec and recompress on export. of course, recompression would only happen on export, like with all good NLEs. @esby
Mug Funky is suggesting that we recompress the part that are decompressed to generate an homogen stream.
I agree that it is probably the smartest way, as it doesn't rely on the exterior application to understand our weirdness.
ShawnFumo
29th March 2005, 15:01
Well, certainly if dsynth could keep track of changes and then recompress on its own given a certain flag, that'd be cool. It was mentioned previously that having dsynth call a compressor could be out of the scope of the project, but then again the mysterious 3.0 could very well be different. :D
I do wonder how difficult it'd be to implement. If it is already detecting changed frames and differs on what it returns based on that and there is some method to invoke a compressor on just one frame, that seems like it could work. Of course, I'm also not sure how things are implemented behind the scenes. It might be that the different kind of frames couldn't be stored together internally and kept track of. Ideally, you'd want a frame to be recompressed only at the very end of the pipeline.
Actually, instead of the current method of having certain filters trigger a flag to make the whole thing uncompressed, what about some sort of raytracing type method. What I mean by that is that currently whenever a frame is asked for in the final video, avisynth presumably has to go backward to find the original frame/s and add the filters. So, if it sees that the frame wasn't touched by a certain kind of filter, it serves it up as the original. If it sees that it was changed, it calls the VfW codec and compresses that one frame and sends that back instead. It would appear as a normal DV stream to any program accessing it, except that it'd play slower during the frames where it has to recompress.
Still, it seems like something an editing program might be expected to take care of. Vion11 mentioned in another thread about how After Effects tends to render out portions that can't be viewed in real time. If a program can do that sort of thing, then it is just a matter of using dsynth at the end to concat the rendered and non-rendered clips together. With that method, a final render would also be pretty much instantaneous. Easier said than done of course. :devil:
Shawn
esby
29th March 2005, 15:38
@bidoche, mug_funky
Right, I misread it.
Now that would mean having compressor filter in avs.
which basically defeat the purpose of using an encoding application.
Now such filter could be possible with dsynth ,
it would be a
getFrame()
{
getDirectFrame(...)
compress(directFrame,codec)
}
something like that.
esby
Bidoche
30th March 2005, 21:50
@ShawnFumo
Both 2.5 and 3.0 use vfw codecs to decompress frames, the code to do the reverse is not much different.
As for keeping track of whatever info must be kept, I am sure it won't be a pb.
The question is if it is the place of avs to do the recompression.
After all the user could render the appropriate part alone, have it encoded using the right codec, and do the merge after that.
(Supposing of course that direct stream works)
It can be quite tedious if there is lots of part though, so maybe it's legitimate.
maybe
space = colorspace(compressedClip)
return compressedClip + otherClip.ConvertTo(space)
...
dplaton
8th April 2005, 08:55
I think that there are manny dificulties for an AviSynth GUI, and probably the power of AviSynth is the lineare flexibility.
But there are some annoyances, let's think to a slide show blind created.
....
I have no GUI experience, so please don't laught.
....
Maybe the GIMP can be of little help, see the link
Easy GUI (http://www-106.ibm.com/developerworks/library/l-gui/)
jkwarras
8th April 2005, 10:01
@ShawnFumo: Any chances to know if there's a plan or roadmap? Just curious to know how much do I have to wait to get a beta testing ;)
HighInBC
12th April 2005, 20:14
Try Activestate Perl, it is free.
It is not very fast, but speed is not needed in this application.
It has OLE support, and several choices of GUI toolkits.
The language is specially suited for string manipulation.
Bandung
14th April 2005, 03:32
I like wxPython so far. I've been using it to do a few gui's and they are fairly easy to build. An Python is awesome for rapid code development. I do miss how quickly I could bring up the look and feel of an application using Visual Basic but I don't miss how bogged down things became when I wanted to do some serious coding behind the GUI.
The one thing that I don't like about wxPython is the documentation. While there are lots of examples and recipes, simple ones like how to copy to and from the clipboard - don't work. And There is no guru manual to help resolve the problem.
Still, this is the the language that I am going to use in order to augment my Avisynth scripting. If I can help out, I will.
PS. I do so love AVEdit. It was this app which has inspired me to use Avisynth more! I really would like to build upon/integrate with this app. Particularly with its preview feature. ITs fast.
tin3tin
16th May 2005, 16:11
I don't know if your still going strong - but I came across this link
Python + avisynth (http://spe.pycs.net/extra/pyvideo/pyVideoIO.html) and a newer link (http://www.geocities.com/rtrocca/python/) - it might be useful?
Tin3tin
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.